Java 直线相交对象

Java 直线相交对象,java,line,rectangles,Java,Line,Rectangles,我的问题是:如何使用100px长的“线”来检测/交叉rPlayer 示例:rEnemy位于(0,0),rPlayer位于(100,0),现在rPlayer位于相交线。有一个方法rPlayer.intersect(rEnemy);但我知道是什么让它们彼此保持100像素的距离并被检测到。当然,我指的是直线,它适用于我们矩形的其他位置,因为rPlayer和rEnemy仍在移动。我不确定您想要什么,听起来您想检查它们是否相距100px,但在x(或y)坐标上相交,而不是在100px半径上 如果你试图检测他

我的问题是:如何使用100px长的“线”来检测/交叉rPlayer


示例:rEnemy位于(0,0),rPlayer位于(100,0),现在rPlayer位于相交线。有一个方法rPlayer.intersect(rEnemy);但我知道是什么让它们彼此保持100像素的距离并被检测到。当然,我指的是直线,它适用于我们矩形的其他位置,因为rPlayer和rEnemy仍在移动。

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

如果你试图检测他们是否在该范围内,你只需在敌人或玩家的x和y坐标上绘制1或2个延伸100px的矩形,并检查另一个棋子是否与该棋子相交


但最好是在敌人的x坐标上加上100px,然后检查玩家是否在该边界内,这样你就不会画更多的矩形了。我之前提到过这一点,因为我认为这可能更容易可视化。

我只是通过创建第三个矩形来解决这个问题,从rEnemy跳线开始,将其宽度和高度设置为rPlayer跳线,然后:

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

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

可变距离是px的值,它以最短的方式将rPlayer和rEnemy分隔在任何位置。

是的,我在考虑半径。长方形的X线和Y线一直在变化,我想看看每个长方形上的“线”有多长。就像我给了你们一条线,我们一直在移动,检查一条线一条线把我们分开的区域。
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);