Я создаю игру для IOS в Cocos2d - Chipmunk - Spritebuilder. Мне нужно заставить персонажей вращаться вокруг точки, и у меня возникли некоторые трудности с реализацией орбит с реальной физикой. До сих пор я испробовал два метода: один из них — создать расстояние между игроком и планетой, а затем применить к игроку силу под углом 90 градусов, где создается угол между концом расстояния и воображаемой линией, проведенной в под углом 90° к нему. Он двигается как сумасшедший, и этот метод не работает для меня.
Затем я попытался вычислить 180 точек на окружности в радиусе от планеты (что является границей обнаружения и реализации ее эффектов на игроке), а затем в методе запланированного обновления [character.physicsbody applyForce:nextCircumferencePoint]; Это не работает, так как он не следует точно по пути и находится довольно далеко от него. Я думаю, что мне нужно также применить гравитационную силу к планете, которая заставит его вращаться вокруг нее. Хотя я не знаю, как рассчитать эту силу, применить ее и поможет ли она вообще.
Третий метод, который никогда не сработает, но использовался для тестирования, заключался в том, чтобы установить его положение на следующую точку окружности. Он вращается по орбите, но любое столкновение не сработает (например, если на его пути окажется кусок космического мусора). Он просто будет расположен прямо над любым другим объектом. Этот мир прекрасен, если вам не нужны коллизии, вы пишете свой собственный физический движок. Это не отточенный способ ведения дел, поэтому я буду его избегать.
Пожалуйста, исправьте все, что я уже сделал, и скажите мне, как это будет работать, или пролейте свет на другие варианты и как их реализовать.