线相交对象

时间:2015-03-05 20:02:55

标签: java line rectangles

Rectangle rEnemy = new Rectangle();
rEnemy.setBounds(0,0,40,40);

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

我的问题:如何使用" line"之类的东西为rPlayer进行检测/交叉。长100px?

示例:rEnemy位于(0,0),rPlayer位于(100,0),现在rPlayer是相交线。有一个方法rPlayer.intersect(rEnemy);但我保持他们100px彼此远离并得到检测。当然我的意思是我们的矩形的其他位置适用的线,因为rPlayer和rEnemy仍在移动。

2 个答案:

答案 0 :(得分:0)

我不确定你想要什么,听起来你想检查它们是否距离是100px但是在x(或y)坐标上相交,而不是100px半径。

如果您正在尝试检测它们是否在该范围内,您只能在敌人或玩家的x和y坐标中制作1或2个延伸100px的矩形,并检查另一个是否与其相交。

但最好只将100px添加到敌人的x坐标并检查玩家是否进入该边界,这样你就不会绘制更多的矩形。之前我刚才提到过,因为我认为可视化更容易。

答案 1 :(得分:0)

我只是通过从rEnemy线开始创建第3个矩形并将其宽度和高度设置为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);

变量距离是px的值,它以最短的方式将rPlayer和rEnem分开。