【问题标题】:Keep them spread out?让它们散开?
【发布时间】:2016-01-30 12:46:29
【问题描述】:

对不起,如果标题含糊不清,我不知道如何真正表达我正在尝试做的事情。

所以,无论如何,我创建了一个基本的僵尸游戏,绿色方块跟随你,你可以死去杀死僵尸。

问题是,如果有一大群僵尸,他们都会互相冲撞并形成一个方格,因为碰撞很难做到,因为他们正沿着他们指向的地方移动(指向玩家),有没有办法让它们足够分散,以免它们相互接触?

这是我移动僵尸的代码:

        for (var i2:int; i2 < ZombiesOnScreen.length; i2++ )
        {
            if (ZombiesOnScreen[i2].alive == true)
            {
                var dist_Y2:Number = player.y - ZombiesOnScreen[i2].y;
                var dist_X2:Number = player.x - ZombiesOnScreen[i2].x;
                var angle2:Number = Math.atan2(dist_Y2, dist_X2);
                var degrees2:Number = angle2 * 180 / Math.PI;
                ZombiesOnScreen[i2].rotation = degrees2;
                var zomBAngle:Number = ZombiesOnScreen[i2].rotation * Math.PI / 180;
                ZombiesOnScreen[i2].x = ZombiesOnScreen[i2].x + 1.6 * Math.cos(zomBAngle);
                ZombiesOnScreen[i2].y = ZombiesOnScreen[i2].y + 1.6 * Math.sin(zomBAngle);
            }
            if (ZombiesOnScreen[i2].hitTestObject(player))
            {
                gameOver();
            }
        }

另外,很抱歉,如果这实际上只是碰撞但只是间隔开,我只是想要一种方法来阻止它们合并。

【问题讨论】:

    标签: actionscript-3 dynamic collision


    【解决方案1】:

    这可能超出了您当前的编程水平,但一种常见的方法是基于 Craig Reynolds 的工作,在他题为“Flocks, herds and school: A Distributed behavior model”的论文中概述。他后来发布了 C++ 库“openSteer”。有关 Java 小程序示例和简化说明,请参阅他的论文 Steering Behaviors For Autonomous Characters

    flocking behavior and ports of openSteer 有很多动作脚本实现。不过要小心 - 您不能只是复制和粘贴代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 2021-01-26
      • 2016-02-17
      • 2021-07-19
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多