Pac0 Antwort für Ihr Szenario richtig ist, aber ich wollte nur in läuten und sagen, dass es einen besseren Weg, dies zu tun ..
int maxCount = 2;
int attCount = 0;
public int[] AttackTriggers; //Add the trigger ID's to the array via the editor.
public float attackResetTime = 1.0f; //Will take one second to reset counter.
if(Input.GetKeyDown(KeyCode.Q))
{
anim.SetTrigger(AttackTriggers[attCount]);
attCount++;
if(attCount > maxCount)
{
attCount = 0;
}
}
Aber dann müssen Sie überprüfen, ob Sie Ihren attCount zurück auf 0 zurücksetzen sollten, wenn der Benutzer nicht Q in einer bestimmten Zeit gedrückt hat. Dies kann mit Coroutines erreicht werden.
public IEnumerator ResetAttCount()
{
yield return new WaitForSeconds(attackResetTime);
attCount = 0;
}
Jetzt können wir die Zählung basierend auf der Zeit zurückzusetzen, aber wir müssen noch sicherstellen, dass wir starten und die Koroutine an den richtigen Stellen zu stoppen, also lassen Sie uns die if-Anweisung ein wenig Original ändern:
if(Input.GetKeyDown(KeyCode.Q))
{
StopCoroutine(ResetAttCount());
anim.SetTrigger(AttackTriggers[attCount]);
attCount++;
if(attCount > maxCount)
{
attCount = 0;
}
}
und dann lassen Sie uns eine weitere Erklärung für die Veranstaltung Key Up hinzufügen:
if(Input.GetKeyUp(KeyCode.Q))
{
StartCoroutine(ResetAttCount());
}
Nein jetzt sind wir erfolgreich den Reset des Angriffs Zeitzählung durch den Timer beginnt, wenn die Taste losgelassen wird und Stoppen nachdem die Taste innerhalb einer Sekunde erneut gedrückt wurde.
es ist eine Klasse fehlgeschlagen – AMA91