首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使一个或多个对象跟随另一个对象?

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

Stack Overflow用户
提问于 2017-12-27 20:44:30
回答 1查看 1.2K关注 0票数 1

在我的CS类的最后一个项目中,我试图制作一个僵尸游戏,在这个游戏中,一个幸存者被许多僵尸跟随。我还在早期阶段,但有一件事我仍然在努力。为了让僵尸跟随玩家,我做的是,僵尸的X和Y向玩家的X和Y方向改变十分之一。但是,代码有两个问题。首先,僵尸在玩家离得太近时停止跟踪,即使站立不动也永远不会到达玩家。第二,僵尸在移动后会不间断地沿着玩家的初始方向前进,当它到达时不会停止,然后存在场。我尝试使用if语句将僵尸保留在屏幕上并跟踪播放器,但失败了。

以下是代码:

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

我就是这样找到僵尸的方向的

代码语言:javascript
复制
public void getDirection(int px , int py)
    {

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

    }
public void act() 
{

我就是这样移动僵尸的

代码语言:javascript
复制
    //moveX(player.getX());
    //moveY(player.getY());
    if((getX()<player.getX()) && (getX() < player.getY()))
    {
        setX(getX()+dx);
        setY(getY()+dy);
    }
}

如有任何建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-12-27 20:53:39

考虑给僵尸一个恒定的速度,这样他们就不会在接近时减速。使用三角洲来确定方向,而不是速度。

考虑一下,当僵尸离玩家足够近的时候,也就是当abs(player.x - zombie.x) < close_enough and abs(player.y - zombie.y) < close_enough的时候,就标记一个命中。这是合理的,如果你的数字大于你的游戏场的网格大小,那么close_enough将是僵尸精灵宽度的一半。

在这种情况下,僵尸的速度应该小于精灵的宽度,否则僵尸和玩家将能够“跳跃”对方而不会在碰撞过程中相遇。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47998428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档