2010-08-31 5 views
0

Надеюсь, я могу описать мою ситуацию ясно, как всякий раз, когда я пытаюсь описать его другим на доске или ручку и бумагу, она занимает несколько попыток :)сдерживающими заднее колесо на переднее колесо

Часть моей программы включает в себя тележка, которая едет вдоль рельса, а тележка работает на двух колесах. Рельсы - это простая линия, которая поднимается и огибается в кривых, а также выравнивается. Чтобы создать уровень, я использую NSMutableArray из CGPoints и рисую их на экране.

Мое текущее обнаружение столкновения включает в себя использование каждого x-cordinate колес и сравнение его с массивом значений точек x. Когда это значение между двумя точками x-values, я могу использовать градиент, чтобы узнать, находится ли оно ниже/под y-значением в этой точке. Это отлично работает, когда я использую определенные значения X.

Итак, возникает проблема.

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

Пример:

O ....... О

Хилл Пример:

О

........ О

То же расстояние в x, разница в Y, поэтому расстояние между гипотенузой больше и создает впечатление раздвигания колес. Мне нужно ограничить заднее колесо передним колесом, так что это правда (гипотенуза) расстояние всегда одно и то же. Трудность, с которой я сталкиваюсь, заключается в том, что, поскольку это связано с изменением x-позиции, я не могу справиться с обнаружением столкновения.

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

Разбитые мои мозги и офисы в течение нескольких дней, любая помощь, пожалуйста?

+0

Это может быть хороший вопрос для математического обмена, если вы не получите его здесь. http://math.stackexchange.com/ Похоже, что это будет простая математическая концепция, которая сделает это. IE: cos (гипотенуза)? Что-то вроде этого, вместо того, чтобы изменять Y, вы бы изменили соотношение x: y – bradenkeith

+0

, проблема в том, что он работает только в том случае, если градиент под обоими колесами одинаковый. Если он находится на быстром уклоне, это приведет к тому, что маховик окажется выше или ниже холма – user355622

ответ

0

Возможно, самый простой способ держать колеса на одном и том же расстоянии друг от друга - это ограничить оба колеса на дорожку. Вы можете определить третье число для трека NSMutableArray, расстояние от начала дорожки. Вы должны определить свой собственный класс вместо использования класса CGPoints.

Другая возможность состоит в том, чтобы центр колес следовал за дорожкой, но со смещением, равным радиусу колес. Центр каждого колеса рассчитывается с использованием координат дорожки x и y, угла линии, от которой колесо касается трека до середины колеса, и радиуса колеса,

Смежные вопросы