Горизонтальная гравитация на игровом объекте в Unity
Я делаю простую 2D игру.
у меня есть gameobject
с rigidbody
составная часть.
Стандартная сила тяжести твердого тела опускает мой игровой объект, но я хочу, чтобы гравитация потянула игровой объект влево.
Я знаю, как установить гравитацию влево при редактировании -> настройка проекта ->... но эта настройка изменит гравитацию на все твердое тело, что является проблемой в моем случае.
Я просто хочу установить гравитацию для 1 игрового объекта.
1 ответ
Поскольку вы создаете 2D-игру, я предполагаю, что к вашему GameObject прикреплен компонент Rigidbody2D. Установите для этой шкалы значение гравитации 0. Также прикрепите ConstantForce2D к вашему GameObject и примените гравитацию в Force -> X. Чтобы получить такое же количество силы, что и сила тяжести, вам нужно умножить силу тяжести (вероятно, 9,81) на массу вашего GameObject. Если ваш собственный вес или масса GameObject время от времени меняются, не забудьте рассчитать это в своем методе обновления, а затем примените его к компоненту ConstantForce2D. Это может выглядеть примерно так:
Rigidbody2D playerRigidbody;
ConstantForce2D customGravity;
void Awake () {
playerRigidbody = GetComponent<Rigidbody2D> ();
customGravity = GetComponent<ConstantForce2D> ();
float gravityForceAmount = playerRigidbody.mass * Physics2D.gravity.magnitude;
customGravity.force = new Vector2 (-gravityForceAmount, 0); // gravity to the left
}
void Update () {
if(mass or gravity changes)
modify the constant force;
}