2015-03-07 3 views
0

Я хочу добавить пружины в свою игру, которые работают как в звуковой системе - то есть, если вы не можете преодолеть препятствие, вы должны поразить источник, который посылает главного героя, летящего к другой весне, которая заставляет его преодолеть это препятствие. Я привел небольшую диаграмму ниже, чтобы продемонстрировать, что я имею в виду (желтые стрелки представляют направление, по которому игрок идет, а красный - это пружины). enter image description hereLibGDX/Java - Попытка найти вектор от одного объекта к другому

В моем Спринг классе я создал метод:

//The detection area (blue rectangle in the diagram) 
public Rectangle broadPhaseDetection() { 
     broadPhaseRectangle = new Rectangle(getxPos() - broadPhaseLength, getyPos(), 
     broadPhaseLength, broadPhaseLength); 
     return broadPhaseRectangle; 
    } 

Если игрок сталкивается с весной, я проверяю, чтобы проверить, есть ли ДРУГОЙ Spring в синей области, и если есть - перевычисления вектор, который приведет вас к этой весне и отправить игрока в этом направлении.

Это похоже на очень простую концепцию, которая, вероятно, была сделана много раз раньше, но по каким-то причинам я не нашел подходящих примеров онлайн. Кто-нибудь знает, как я могу получить вектор, который мне нужен?

Любое понимание очень ценится, спасибо.

+0

Nice иллюстрации. –

ответ

0

Просто вычтите пункт назначения из источника, чтобы получить вектор между ними. Вектор от PointA до PointB: PointB - PointA. (И для вычитания двух векторов, просто вычтите их компоненты.)

В Libgdx a Vector2 можно использовать для отслеживания этих и поддерживает перегруженные методы sub.

1

Если вектор положения пружины, на который вы попали, равен Vector2 v1, а положение второй пружины - Vector2 v2, тогда вам нужно всего лишь v2.sub(v1).

Если вы заинтересованы только в направлении, а не длину вектора, вы можете нормализовать, делая v2.sub(v1).nor() (это дает вектор, указывающий на правильный путь, но с длиной 1)

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