Я пытаюсь добавить ускорение к объекту с помощью компонента RigidBody2D, используя AddForce
, но, похоже, все, что он делает, это вместо этого добавляет фиксированную скорость.
Вот настройки RigidBody2D:
Для тестирования я изменил функцию Update
, чтобы я мог добавлять силы и периодически сообщать скорость объекта:
void Update()
{
time += Time.deltaTime;
if (time > 0.5)
{
Debug.Log("Velocity magnitude = " + rigidbody2D.velocity.magnitude);
time = 0;
}
if (Input.GetKeyDown(KeyCode.Q))
{
rigidbody2D.AddForce(Vector2.right);
}
}
Я вижу, что каждый раз, когда я нажимаю Q, величина скорости увеличивается на фиксированные 0,02.
Т.е. сначала он вообще не движется и скорость равна 0, затем после нажатия Q величина скорости изменяется на 0,02 и остается на 0,02, в то время как объект медленно перемещается вправо. Повторное нажатие Q увеличивает его до 0,04, затем повторное нажатие увеличивает его до 0,06 и так далее.
Это результаты, полученные два дня назад. Сегодня я снова проделал эксперимент и получил другие приращения скорости, но в остальном то же самое поведение.
Скорость меняется только когда я добавляю силу.
Если бы я добавил силу величиной 1 к покоящемуся объекту с массой 1, то его скорость увеличивалась бы на 1 по величине каждую единицу времени (что, я думаю, здесь составляет секунды).
Вместо этого он остается неизменным.
Использование ForceMode2D.Impulse увеличивает приращение скорости с 0,02 до 1, но поведение остается прежним - без ускорения, только одноразовые приращения скорости.
Что я делаю неправильно?
Я пробовал искать похожие сообщения и проблему в целом, но единственное, что я обнаружил, были либо неуместными, либо спрашивали противоположное (как остановить ускорение).
Любая помощь будет оценена по достоинству.
Версия Unity - 2019.1.1f1.