2017-01-07 5 views
0

Я использую скрипт, поэтому, когда пользователь прикасается к экрану, игрок прыгает в воздух , но проблема в том, что пользователь держит касание игрока в воздухе и никогда не падает как я могу отключить touch, поэтому, когда пользователь только прикасается, как только игрок прыгает один раз?Отключить Touch Hold в 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); 
    } 
} 

}

ответ

1

Вам просто нужно добавить проверку на сенсорной фазы. В этом случае TouchPhase.Began подходит, так как он будет прыгать, когда пользователь коснется экрана. Если вы хотите, чтобы он прыгнул, когда пользователь выпустил касание, используйте TouchPhase.Ended.

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

Примечание:

Вы всегда должны проверить ввода события в функции Update() не в функции FixedUpdate(). Я предлагаю вам поместить этот код в функцию Update(). Ваш физический код должен войти в функцию FixedUpdate().

+0

не работает, поэтому он постоянно отключен! –

+0

Я использую единство удаленного и ничего не работает после ввода кода .... –

+0

Привет, вы должны положить этот код из моего ответа в функции обновления. Я просто подтвердил, что он работает на моем устройстве с Unity Remote. Возможно, что-то не так с вашим Unity Remote. Попробуйте его на устройстве. – Programmer