2017-04-11 2 views
-1

Ich mache ein 2D-Spiel für ein Handy Ich brauche einen kleinen und großen Sprung für den Charakter Ich hatte eine Menge Schwierigkeiten, Einheit zu bekommen, um den Unterschied zu sagen zwischen einem Tippen (für einen kleinen Sprung) und einem Niederhalten (für einen großen Sprung).Verschiedene Sprünge zwischen Tippen und gedrückt halten (C#)

+0

berechnen Sie einfach die Eingabezeit, die über den Wasserhahn selbst passiert. –

+0

Ich versuche dies, indem ich einen countDown-Timer verwende, aber es endet häufig mit der Anwendung beider Fälle. –

+1

Könnten Sie dem Beitrag den Code hinzufügen, damit die Community Ihnen besser helfen kann? Sonst werden wir nicht wissen, was Sie versucht haben/versuchen –

Antwort

0

Sie könnten überprüfen, ob das Zeichen in der Luft ist und dass die Geschwindigkeit nicht 0 und in einer Richtung nach oben ist. Wenn dies der Fall ist, bedeutet dies, dass der Charakter (höchstwahrscheinlich) gesprungen ist. Dann, wenn dies wahr ist, nach einer kurzen Zeit (verwenden Sie einen Timer hier), überprüfen wir auch, ob der Spieler immer noch den Bildschirm drückt oder nicht. Wenn sie immer noch auf den Bildschirm drücken, fügen Sie dem Zeichen mehr Kraft hinzu, bis die Höhe des größeren Sprungs erreicht ist.

Pseudocode:

if (player presses screen) 
{ 
    // Add small impulse to make the character jump to the "minimum jump height" 

    // Start timer  

    if (character's velocity is upwards and they are not grounded) 
    { 
     if (timer is greater than your chosen time) 
     { 
      // Add another impulse so character jumps to the "maximum jump height" 
      // Stop and reset timer 
     } 
    } 
} 

Dies ist eine grundlegende Plan ist, es ist nicht perfekt, aber es sollte Ihnen den Einstieg; Es gibt viele Möglichkeiten, dies zu tun - Sie sollten in Betracht ziehen, Force statt Impulse zu verwenden, wenn Sie eine wirklich variable Sprunghöhe wünschen. Weitere Informationen finden Sie in der Unity-Dokumentation für .

Hinweis: Es ist besser Praxis Physik Aktionen in FixedUpdate() anstatt in Update() anzuwenden. Dies macht es komplizierter, da Sie in der Regel die Playereingabe in Update() überprüfen möchten. Dies ist jedoch ein notwendiger Schritt, um Probleme mit physikbasierten Aktionen zu vermeiden.

Verwandte Themen