Использование AddForce вместе с GetMouseButton(0) в методе FixedUpdate
Поместил такой код в FixedUpdate так как работу с физикой рекомендуется делать не в Update, а в FixedUpdate. Проблема в том, что он срабатывает не корректно. Как это исправить?
void FixedUpdate()
{
if (Input.GetMouseButtonDown(0))
{
//AddForce
}
}
Ответы (1 шт):
Автор решения: Artsem Gorbatchev
→ Ссылка
Всё просто
Что бы при нажатии перемещать объект, т.е. чтобы переместить - надо нажать
private Vector3 force;
private void Update()
{
//force = Vector3.zero
if(Input.GetMouseButtonDown(0))
{
//force = ...
}
}
private void FixedUpdate()
{
//.AddForce(force * Time.fixedDeltaTime) по желанию можно добавить ForceMode.Impulse
}
Если вы хотите чтобы объект перемещался когда кнопка нажата, то переносим force = Vector3.zero в if(Input.GetMouseButtonUp(0))
private void Update()
{
if(Input.GetMouseButtonDown(0))
{
//force = ...
}
if (Input.GetMouseButtonUp(0))
{
//force = Vector3.zero
}
}
Если кратко, то для регистрации нажатий рекомендуется использовать Update, а для работы с физикой FixedUpdate. (Вероятнее всего Input некорректно ведёт себя в FixedUpdate! Подскажите если кто знает почему так происходит?!)