2015-03-05 1 views
0
Rectangle rEnemy = new Rectangle(); 
rEnemy.setBounds(0,0,40,40); 

Rectangle rPlayer = new Rectangle(); 
rPlayer.setBounds(200,0,40,40); 

мой вопрос: как я могу сделать обнаружение/пересечение для rPlayer, используя что-то вроде «line» long for 100px?Строка пересекается Объект

пример: rEnemy находится в (0,0), rPlayer находится в точке (100,0), и теперь rPlayer является пересекающейся линией. существует метод rPlayer.intersect (rEnemy); но я держу их на расстоянии 100 пикселей друг от друга и получаю обнаружение. конечно, я имею в виду линию, которая применима для других позиций наших прямоугольников, потому что rPlayer и rEnemy все еще находятся в движении.

ответ

0

Я не совсем уверен, что вы хотите, похоже, вы хотите проверить, находятся ли они на расстоянии 100px, но пересекаются с координатой x (или y), а не радиусом 100px.

Если вы пытаетесь определить, находятся ли они в пределах этой границы, вы можете просто сделать 1 или 2 прямоугольника, которые расширяют 100 пикселей в координатах x и y либо противника, либо игрока, и проверяют, пересекает ли это другой кусок.

Но, возможно, было бы лучше просто добавить 100px к координате x врага и проверить, попал ли игрок в эту границу, таким образом вы не рисуете больше прямоугольников. Я только что упомянул об этом раньше, потому что думал, что было бы легче визуализировать.

+0

да Im думая о радиусе. шнуры X и Y прямоугольников меняются все время, и я хочу видеть, как долго «линия» прикреплена к каждому из них. его вроде я дал вам линию, мы все время двигаемся и проверяем дистанции, которые разделяют нас по строкам. – Periit

0

Я просто SLOVE это путь создания 3-й прямоугольника, начиная с rEnemy шнуров и делают его ширину и высоту rPlayer шнуров, то:

double calculate = Math.pow(Math.abs(rPlayer.x-rEnemy.x-Camera.posX), 2)+Math.pow(Math.abs(rEnemy.y-rPlayer.y+Camera.posY), 2); 
int distance = (int)Math.sqrt(calculate); 

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