如何使一个或多个对象跟随另一个对象?

时间:2017-12-27 20:44:30

标签: java object

对于我的CS课程的最终项目,我正在尝试制作一个僵尸游戏,幸存者正在跟随一些僵尸。我还处于早期阶段,但还有一件事我还在努力。为了让僵尸跟随玩家,我做的是僵尸的X和Y朝向玩家的X和Y改变10。但是,代码存在两个问题。首先,当僵尸离得太近时,僵尸停止跟随玩家,即使站着不动也不会真正到达玩家。其次,僵尸在移动后将在玩家的初始方向上不间断地移动,并且当它到达它时不会停止然后存在场。我尝试使用if语句将僵尸保留在屏幕上并跟随播放器但是失败了。

以下是代码:

这些是类中属于僵尸对象的代码

这就是我如何获得僵尸的方向

public void getDirection(int px , int py)
    {

        dx =(px - getX())/50;
        dy =(py - getY())/50;

    }
public void act() 
{

这就是我移动僵尸的方式

    //moveX(player.getX());
    //moveY(player.getY());
    if((getX()<player.getX()) && (getX() < player.getY()))
    {
        setX(getX()+dx);
        setY(getY()+dy);
    }
}

任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

考虑给僵尸一个恒定的速度,所以它们在关闭时不会减速。使用增量确定方向但不确定速度。

当僵尸足够接近给玩家时,即abs(player.x - zombie.x) < close_enough and abs(player.y - zombie.y) < close_enough时,请考虑标记。如果你的数字大于你的游戏区域的网格大小,这是有道理的,那么close_enough将是僵尸精灵的宽度的一半。

在这种情况下,僵尸速度应该小于精灵的宽度,否则僵尸和玩家将能够跳跃&#39;彼此没有参加碰撞课程。