Задать вопрос
@xzi1

Как реализовать машину в 2D Side-Scroll игре?

Каким способом реализовать машину? Сейчас использую Wheel Joint 2D, Physics Material 2D, но колеса начали касаться кузова и "цепляться" за кузов, поэтому поставил трение кузову на 0, но думаю это не совсем правильное решение.

Главное требование от игры - более-менее адекватная, внедорожная симуляция. Параметры у машины изменяемые это baseSpeed, baseAcceleration, baseFuel.

Сейчас просто плавное изменение motorTorque, а от него зависит pitch звука двигателя, в зависимости от того, на что давит игрок. Если на газ, то постепенно добавляем, если на тормоз, то убавляем, до отрицательного числа, а если ничего не жмет, то постепенно к нулю стремится.

Если оставлять Wheel Joint 2D, то по какому принципу нужно в нём изменять переменные. Что от чего зависит.
И как правильно задать центр тяжести. Сейчас машина очень часто отскакивает при прыжках так, что ныряет в землю. Масса rb2d около 2000 на кузове, на колесах около 20-40
  • Вопрос задан
  • 68 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Академия Эдюсон
    Разработчик игр на Unity + ИИ
    6 месяцев
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Stepik
    PRO C#. Профессия "Backend разработчик"
    4 месяца
    Далее
Решения вопроса 1
opium
@opium
Linux, разработка и проверка автоматизации
Колёса цепляются за кузов — в WheelJoint2D укажи Connected Body и выключи Enable Collision, трение кузова в 0 тогда не нужно.

Отскоки скорее всего из-за разницы масс: 2000 против 20-40 это 50-100 к 1, на таком соотношении через joint решатель нестабилен. Сделай кузов ~20, колёса по ~2 и подбери заново. Центр тяжести задаётся в локальных координатах кузова: rb.centerOfMass = new Vector2(0f, -0.25f); (ниже геометрического центра). Bounciness у материалов в 0, Collision Detection = Continuous.

Параметры: motorSpeed — целевая угловая скорость колеса (град/с), maxMotorTorque — предел момента. baseSpeed переводится как
motorSpeed = baseSpeed / wheelRadius * Mathf.Rad2Deg
, baseAcceleration уходит в maxMotorTorque, а топливо к joint отношения не имеет. Подвеска для старта: frequency 3-5, dampingRatio 0.7-0.9.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы