Итак, у меня есть 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 (справа).Я предполагаю, что это действительно элегантное решение, которое я просто пропускаю.Спасибо.