所以我正在制作这个自上而下的游戏,其中有僵尸,你的玩家可以射击它们。从播放器中有一条红线(如激光),显示您指向的方向。我希望这种激光器像真正的激光器一样 - 如果有一个物体,它只会像那个物体一样远。此外,我不确定如何使激光通过鼠标指针并继续前往窗口的边缘(除非对象在路上)。我有一个名为实体的ArrayList,它包含我渲染的所有对象(Class = Entity)。
Player p = (Player) entities.get(0);
g.setColor(Color.RED);
g.drawLine((int)p.getX(), (int)p.getY(), getMouseX(), getMouseY());
该代码只是从Players位置创建一条到达Cursor(正如预期)点的行。请记住,敌人是圈子(我有一种方法来检查一个点是否在一个圆圈内)
public boolean isPointInCircle(double centerX, double centerY, double radius, double x, double y){
boolean isInRectangle = x >= centerX - radius && x <= centerX + radius && y >= centerY - radius && y <= centerY + radius;
if(isInRectangle){
double dx = centerX - x;
double dy = centerY - y;
dx *= dx;
dy *= dy;
double distanceSquared = dx + dy;
double radiusSquared = radius * radius;
return distanceSquared <= radiusSquared;
}
return false;
}
我尝试发送一个看不见的&#34;子弹&#34;在线的梯度但它失败了所以我放弃了。所以我的两个问题是:
如何使线条朝向鼠标的方向,但是一直走到框架的边缘?
...除非它与实体相交,否则它只会到实体那么远?