Вопрос управления 2D-игрой - вращение и движение - PullRequest
0 голосов
/ 04 июня 2011

Мне было интересно, может ли кто-нибудь помочь мне начать или указывать в правильном направлении.Я хочу сделать простую игру вождения с использованием базовой анимации.Я довольно хороший программист obj-c, но когда дело доходит до движения и математики, я терплю неудачу.Я хочу, чтобы рулевое колесо контролировало направление движения автомобиля, а вперед / назад управляло ускорением и замедлением.Если кто-нибудь может помочь мне с кодом рулевого колеса, я был бы очень признателен!Так что в основном мне нужна помощь в создании круга, который может вращаться с помощью перетаскивания одним пальцем, и я передам его значения преобразования в мой автомобильный вид (я думаю, что смогу обработать код ускорения / отклонения).:) Кроме того, у меня есть 2 приглашения на dribbble.com, чтобы раздать, всем, кто мне помогает, я был бы рад предоставить его.


Грейди, totowtwo, спасибо за оба ваших ответа, яценить это.Я дошел до точки, где я могу вращать «руль», и он будет вращать мою «машину», я также заставил его двигаться вперед и назад.Просто нужно двигаться, чтобы быть более реалистичным ... Вот ссылка на проект xCode, http://www.cl.ly/7VBU, сделал его очень простым, поэтому, если кто-нибудь посмотрит на него - будет легко изменить / добавить код.Так что, если кто-то захочет взглянуть на это и помочь мне сделать движение более реалистичным, я буду навсегда у вас в долгу!:) спасибо!

Ответы [ 2 ]

0 голосов
/ 04 июня 2011

Я не эксперт, но вы, вероятно, могли бы сделать что-то вроде:

CGPoint centerOfWheel;
CGPoint currentTouchPoint;
float radians = atan2(currentTouchPoint.x-centerOfWheel.x, currentTouchPoint.y-centerOfWheel.y);

затем примените преобразование к колесу ... конечно, вы захотите сделать преобразования кумулятивными для вида на расстоянии, так как продолжение поворота колеса приведет к продолжению поворота.

также, чтобы сделать его более реальным и менее отзывчивым, вы можете использовать меньшую степень поворота, так что поворот колеса за один круг не приведет к полному кругу поворота транспортного средства. вам придется поиграть.

0 голосов
/ 04 июня 2011

Отправной точкой было бы признание того, что типичное рулевое колесо автомобиля имеет движение в 900 градусов, независимо от того, хотите вы это для колесика или нет, это дизайнерское решение. Колеса в автомобиле обычно указывают на 30 градусов от + z при максимальном вращении колеса. Вы можете использовать простое линейное преобразование угла поворота рулевого колеса в угол поворота колеса.

Отсюда угол поворота автомобиля является функцией угла поворота колеса, умноженного на расстояние вперед. Когда автомобиль движется вперед, вы можете представить себе, как вы указываете касательную окружности с бесконечным радиусом, когда вы указываете прямо вперед, и окружность меньшего радиуса (~ 4x длины автомобиля), когда рулевое колесо полностью наклонено.

Конечно, не стесняйтесь отказаться от правил дизайна типичных транспортных средств. Подарите своим пользователям забавные автомобильные поезда, как это делают голономные роботы!

...