对于我的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);
}
}
任何建议都会受到赞赏。
答案 0 :(得分:0)
考虑给僵尸一个恒定的速度,所以它们在关闭时不会减速。使用增量确定方向但不确定速度。
当僵尸足够接近给玩家时,即abs(player.x - zombie.x) < close_enough and abs(player.y - zombie.y) < close_enough
时,请考虑标记。如果你的数字大于你的游戏区域的网格大小,这是有道理的,那么close_enough
将是僵尸精灵的宽度的一半。
在这种情况下,僵尸速度应该小于精灵的宽度,否则僵尸和玩家将能够跳跃&#39;彼此没有参加碰撞课程。