Заставить персонажа двигаться по кругу - PullRequest
1 голос
/ 20 июня 2011

Итак, у меня есть 2D-игра, в которой обычно есть только гравитация и «плоские» уровни, однако я добавил в «планеты», которые имеют собственную гравитацию.

У меня есть функция addForce (float xForce, floatyForce), который я использую для перемещения моего персонажа.Так скажем, если я позвонил player.addForce (1, -1);игрок будет двигаться вверх и вправо (хотя и немного).Это хорошо работало на уровнях с регулярной гравитацией вниз, однако с планетами это не так.Существует еще один объект с плавающей точкой earthAngle:

atan2 (player.getY () - earth.getY (), player.getX () - earth.getX ());

Что я сделал для кода перехода на планетах:

player.addForce (cos (earthAngle) * 1500, sin (earthAngle) * 1500);

, который работает хорошо.Однако я застрял в том, как заставить персонажа ходить по планете.

В настоящее время для кода движения у меня есть:

player.addForce (25 * x_ * cos (earthAngle), 25 + x_ * sin (earthAngle));

, который работает только на некоторых частях и работает наоборот на нижней части, а также сильнее / слабее на некоторых частях, x_ может быть либо -1(слева) или 1 (справа).Я предполагаю, что это действительно элегантное решение, которое я просто пропускаю.Спасибо.

1 Ответ

3 голосов
/ 20 июня 2011

Поскольку у вас уже есть вектор от центра планеты к игроку, например (x, y), вы можете использовать вектор, перпендикулярный этому (-y, x), в качестве направления для силы ходьбы.

...