Пытаюсь реализовать объект который при нажатии на кнопку начинает движение по прямой. Разгоняется до максимально разрешенной скорости и продолжает движение на этой скорости.
При нажатии кнопок объект смещается влево или право.
- Код: Выделить всё
private var lineLeft : Vector3 = Vector3 (0, 0, 220);
private var lineRight : Vector3 = Vector3 (0, 0, -220);
function Update ()
{
if(Input.GetButton("Vertical"))
{
rigidbody.AddForce(transform.forward *10);
}
}
function FixedUpdate ()
{
if(Input.GetKeyUp("left"))
{
rigidbody.MovePosition(rigidbody.position + lineLeft * Time.deltaTime);
}
if(Input.GetKeyUp("right"))
{
rigidbody.MovePosition(rigidbody.position + lineRight * Time.deltaTime);
}
}
Как мне вычислить текущую скорость перемещения объекта ? что бы я мог поставить ограничение на скорость.
К примеру:
- Код: Выделить всё
if(speed > 100)
{
speed = 100;
}
Теперь вопрос по FixedUpdate.
Как видно из кода я использую rigidbody.MovePosition. При Update объект смещается не на точное растояние и может отклонятся от заданного числа
(в доках так и написано, использовать FixedUpdate с rigidbody.MovePosition). Но если я использую FixedUpdate то реакция на нажатие кнопки какая то заторможенная
и не всегда срабатывает.
Ткните носом в каком направлении капать ? Спасибо.