Есть два вида перемещения объекта в единстве
- Добавить силу к юниту и толкнуть его.
- Установка позиции единицы измерения каждый раз по истечении (также называемой скользящей единицей)
В вашем случае это тип 2, поэтому ваше движение Vector3
указывает на положение движущейся единицы.
В вашем коде движение вычисляется кратным Input.GetAxis()
(диапазон значений: [0, 1]) со значением скорости, затем берется максимальное расстояние, на которое интервал, на который единица может двигаться, movement = Vector3.ClampMagnitude(movement, speed);
.
Это просто для перемещения юнита по земле (влево, вправо, вперед, назад)
Далее для высоты блока, движение применяет ось y, равную значению силы тяжести (9,8), кратному deltaTime. Это означает, что высота каждой единицы измерения уменьшается на 9,8
.
В конце концов, конвертируйте movement
из локального в мир, затем установите положение движущейся единицы на movement
.
Надеюсь, мой ответ может решить вашу проблему.