2017-01-07 12 views
0

Ich benutze ein Skript so, wenn der Benutzer berührt den Bildschirm Player springt in die Luft aber das Problem ist, wenn der Benutzer die Berührung hält der Spieler in der Luft stecken und fällt nie wie kann ich deaktivieren Touch Hold, wenn der Benutzer nur einmal berührt, springt der Spieler einmal.Deaktivieren Touch Hold in Unity3d

Rigidbody2D Rigid; 
public float UpForce; 
public float RightSpeed; 

void Start() 
{ 
    Rigid = GetComponent<Rigidbody2D>(); 
} 

void Update() 
{ 
    transform.Translate (Vector2.right * Time.deltaTime * RightSpeed); 
} 

void FixedUpdate() 
{ 
    foreach (Touch touch in Input.touches) 
    { 
     Rigid.AddForce (Vector2.up * UpForce); 
    } 
} 

}

Antwort

1

Sie müssen nur Scheck für die Touch-Phase hinzuzufügen. In diesem Fall ist TouchPhase.Began geeignet, da es springt, wenn der Benutzer den Bildschirm berührt. Wenn Sie möchten, dass es springt, wenn der Benutzer die Berührung freigibt, verwenden Sie TouchPhase.Ended.

foreach (Touch touch in Input.touches) 
{ 
    if (touch.phase == TouchPhase.Began) 
    { 
     Rigid.AddForce(Vector2.up * UpForce); 
    } 
} 

Hinweis:

Sie sollten immer für Eingabeereignis überprüfen in der Update() Funktion nicht in der FixedUpdate() Funktion. Ich schlage vor, dass Sie diesen Code in die Update() Funktion einfügen. Ihr Physik-Code sollte in der FixedUpdate() Funktion gehen.

+0

es funktioniert nicht die Berührung dauerhaft deaktiviert! –

+0

Ich benutze Einheit Remote und nichts funktioniert nach dem Setzen des Codes .... –

+0

Hallo, Sie müssen diesen Code aus meiner Antwort in der Update-Funktion setzen. Ich habe gerade bestätigt, dass es mit Unity Remote auf meinem Gerät funktioniert. Vielleicht stimmt etwas mit deiner Unity Remote nicht. Probieren Sie es auf dem Gerät selbst aus. – Programmer

Verwandte Themen