在我的CS类的最后一个项目中,我试图制作一个僵尸游戏,在这个游戏中,一个幸存者被许多僵尸跟随。我还在早期阶段,但有一件事我仍然在努力。为了让僵尸跟随玩家,我做的是,僵尸的X和Y向玩家的X和Y方向改变十分之一。但是,代码有两个问题。首先,僵尸在玩家离得太近时停止跟踪,即使站立不动也永远不会到达玩家。第二,僵尸在移动后会不间断地沿着玩家的初始方向前进,当它到达时不会停止,然后存在场。我尝试使用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);
}
}如有任何建议,我们将不胜感激。
发布于 2017-12-27 20:53:39
考虑给僵尸一个恒定的速度,这样他们就不会在接近时减速。使用三角洲来确定方向,而不是速度。
考虑一下,当僵尸离玩家足够近的时候,也就是当abs(player.x - zombie.x) < close_enough and abs(player.y - zombie.y) < close_enough的时候,就标记一个命中。这是合理的,如果你的数字大于你的游戏场的网格大小,那么close_enough将是僵尸精灵宽度的一半。
在这种情况下,僵尸的速度应该小于精灵的宽度,否则僵尸和玩家将能够“跳跃”对方而不会在碰撞过程中相遇。
https://stackoverflow.com/questions/47998428
复制相似问题