在与对象相交时使线“停止”

时间:2015-03-25 16:38:09

标签: java java-2d

所以我正在制作这个自上而下的游戏,其中有僵尸,你的玩家可以射击它们。从播放器中有一条红线(如激光),显示您指向的方向。我希望这种激光器像真正的激光器一样 - 如果有一个物体,它只会像那个物体一样远。此外,我不确定如何使激光通过鼠标指针并继续前往窗口的边缘(除非对象在路上)。我有一个名为实体的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;在线的梯度但它失败了所以我放弃了。所以我的两个问题是:

如何使线条朝向鼠标的方向,但是一直走到框架的边缘?

...除非它与实体相交,否则它只会到实体那么远?

0 个答案:

没有答案