Momentan versuche ich nur, die Sprites-Kerze von unbeleuchtet zu beleuchten, wenn der Spieler sowohl die Kerze als auch die Streichhölzer "abgeholt" hat und die Kerze erlischt. nach einer bestimmten Zeit. Wenn jedoch die Leertaste gedrückt wird, tritt der Übergang von unbeleuchtet zu erleuchtet nicht auf, obwohl das Debug-Protokoll True zurückgibt, wenn es sollte. Ich poste hier, um eine Anleitung zu bekommen, da ich den größten Teil des Tages damit verbracht habe, online zu gucken und buchstäblich keine Ahnung zu haben, wie ich vorgehen soll. Grundsätzlich sind die Bilder, zwischen denen ich zu wechseln versuche, zwei verschiedene Bilder, die sich im Sprites-Ordner unter Assets befinden.Sprite ändert sich nicht, wenn die Taste gedrückt wird - unity 2D
Das ist, was ich bisher habe.
//the two sprites transition
public Sprite unlitCandle;
public Sprite litCandle;
private SpriteRenderer spriteRenderer;
bool pickUpMatches = false;
bool pickUpCandle = false;
float timeRemaining =5;
bool candleLit = false;
// Use this for initialization
void Start() {
spriteRenderer = GetComponent<SpriteRenderer>();
if (spriteRenderer.sprite == null)
spriteRenderer.sprite = unlitCandle;
}
// Update is called once per frame
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.CompareTag("Matches"))
{
collision.gameObject.SetActive(false);
pickUpMatches = true;
}
if (collision.gameObject.CompareTag("UnlitCandle"))
{
collision.gameObject.SetActive(true);
pickUpCandle = true;
}
}
public void CandleTimer()
{
if (candleLit == true)
{
timeRemaining = 5;
timeRemaining -= Time.deltaTime;
if (timeRemaining <= 0)
{
candleLit = false;
spriteRenderer.sprite = unlitCandle;
}
}
}
public void ChangeSprite()
{
if (spriteRenderer.sprite == unlitCandle)
{
spriteRenderer.sprite = litCandle;
}
}
void Update() {
if (pickUpCandle == true && pickUpMatches == true)
{
//Debug.Log(candleLit);
if (Input.GetKey(KeyCode.Space) && !candleLit)
{
CandleTimer();
ChangeSprite();
Debug.Log(timeRemaining);
candleLit = true;
//Debug.Log(candleLit);
}
}
}
}
Es wird nichts lösen, denke ich, aber ich denke, dass Sie GetKeyDown anstelle von GetKey verwenden möchten. GetKeyDown tritt nur einmal auf, während GetKey bei jedem Drücken einer Taste auftritt. – Maakep
Auch. Candle-Light-Timer wird nie starten. Zuerst prüfen Sie, ob Candlelight falsch ist. Dann gehen Sie zur CandleLit-Methode, wo Sie prüfen, ob es wahr ist. Es wird niemals wahr sein, da es nur ausgeführt wird, wenn es falsch ist. – Maakep