2017-10-04 4 views
0

In der Unity-Dokumentation kontinuierlich Brennen Input.getKeyUp sagtInput.getKeyUp auf Halten-Taste gedrückt

Gibt true zurück, während des Rahmens der Benutzer den Schlüssel nach Name

Mein Skript ist identifiziert veröffentlicht:

Jetzt funktioniert die Input.GetKey(KeyCode.LeftArrow), wie ich es erwartet habe, also wenn ich es halte mein Objekt kontinuierlich nach links bewegt. Allerdings möchte ich, dass mein Objekt "springt", wenn ich die Leertaste drücke, aber ich möchte nicht, dass es kontinuierlich nach oben geht, wenn die Leertaste gehalten wird. Deshalb habe ich Input.GetKeyUp anstatt nur GetKey verwendet, wenn ich die Leertaste gedrückt halte fährt nach oben.

Wie kann ich es so machen, wenn die Leertaste gehalten wird, tut es nichts, aber wenn ich die Leertaste loslasse, fährt es aufwärts.

+0

Kommentar ändern würde, das haben könnte nichts mit Ihrem Problem zu tun, aber Sie sollten mehrere aufeinanderfolgende if-Anweisung statt sonst tun, wenn Sie sonst nie in die "if (Input.Get KeyUp (KeyCode.Space)) "solange der linke Pfeil gedrückt wird (wegen des" else "). –

+0

@PierreBaret Das sollte nur wichtig sein, wenn ich beide gleichzeitig drücke, was wahrscheinlich eine gute Idee ist, aber es löst immer noch nicht mein ursprüngliches Problem. Danke für die Empfehlung aber – JackVanier

+0

* "Wenn die Leertaste gedrückt gehalten wird, tut es nichts" * Wenn die Leertaste gedrückt gehalten wird, soll sie die linke Pfeiltaste drücken, was bedeutet, dass 'if (Input.GetKey (KeyCode.LeftArrow)) 'sollte ignoriert werden? – Programmer

Antwort

0

Ich weiß nicht wirklich, warum es auf diese Weise verhält, aber wenn ich Sie wäre, würde ich in Betracht ziehen, jede Schlüsselüberprüfung in einer anderen if() Klausel statt der Sie verwenden. Versuche es so zu schreiben und schau ob es funktioniert.

Und auch da

Jedoch habe ich mein Ziel wollen zu "springen", wenn ich die Leertaste drücken

I GetKeyUp von GetKeyDown

if (Input.GetKey (KeyCode.LeftArrow)) { 
    pos.x -= Time.deltaTime * speed; 
    transform.position = pos; 
} 

if (Input.GetKeyDown (KeyCode.Space)) { 
    Debug.Log ("Space key up"); 
    pos.y += Time.deltaTime * speed; 
    transform.position = pos; 
} 
+0

Ich habe das versucht und es steigt immer noch kontinuierlich, wenn Sie die Umschalttaste gedrückt halten. – JackVanier

+0

Es wird fortgesetzt, nur das GameObject zu erhöhen oder auch die Protokollnachricht zu übertragen: Leertaste? –

+0

Es spamt auch die Nachricht kontinuierlich, so dass es weiterhin die if-Anweisung eingibt – JackVanier