#unity3d
#unity-game-engine
Вопрос:
Я двигал машину по городу в рамках своей игры. Перемещайте автомобиль, применяя непрерывную скорость:
appliedSpeed = Time.deltaTime * 10f;
appliedSpeed = Mathf.Min(appliedSpeed, speed);
myRigidbody.velocity = transform.forward * appliedSpeed;
Теперь, как проблема, гравитация не затрагивается. Хотя в настройках физическая гравитация установлена на -9,8.
Значения инспектора жесткости моего игрового автомобиля я показал на изображении ниже.
В настоящее время автомобиль игрока также может передвигаться над акваторией. Я не хочу, чтобы это, естественно, требовало падения в воду. Мне нужна эта реализация, что я должен требовать от нее?
Ответ №1:
Вы должны использовать rigidbody.AddForce()
вместо изменения .velocity
напрямую.
Вы эффективно переопределяете эффекты гравитации при настройке .velocity
, и именно поэтому это не дает эффекта.
Дополнительный совет:
Если вы используете ForceMode
значение, представляющее непрерывную силу ( Force
для учета массы и Acceleration
для игнорирования массы) и .AddForce()
внутри FixedUpdate
, вам не нужно масштабировать силу по дельта-времени. Движок сделает это за вас.
Комментарии:
1. Но я хочу двигать свою машину с постоянной скоростью, чтобы я применял скорость напрямую. Если я применю силу, то она будет постоянно увеличиваться.
2. Еще одна проблема с силой, управление автомобилем с большим касанием, когда вы двигаетесь с силой, его скольжение в игре…
3. Ваша первая проблема легко решается путем ограничения величины скорости, а не ее настройки, или путем балансировки силы и сопротивления таким образом, чтобы максимальная скорость соответствовала вашей желаемой скорости. — Вторая проблема — это просто вопрос настройки. Увеличьте сопротивление, чтобы быстрее останавливаться. Увеличьте величину силы, чтобы ускорить ускорение. Используйте скрипт для непосредственного выполнения поворотов, чтобы создать ощущение аркадности, или установите полный привод колеса для реалистичного поворота. — В худшем случае и альтернативный вариант, который я не рекомендую: просто добавьте гравитацию после изменений в
.velocity
, поскольку это было проблемой в первую очередь.