让它们散开?

时间:2016-01-30 12:46:29

标签: actionscript-3 dynamic collision

很抱歉,如果标题不明确,我不知道如何真正说出我想要做的事情。

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

问题是,如果有大量的僵尸,他们都会进入彼此并制造一个方格,因为他们正在指向他们所指向的地方,因此碰撞太难了),有没有一种方法可以让它们足够分散,以便它们永远不会进入彼此?

这是我移动僵尸的代码:

        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();
            }
        }

另外,对不起,如果这只是碰撞,但只是间隔,我只是想要一种方法来阻止他们合并。

1 个答案:

答案 0 :(得分:0)

这可能超出了你目前的编程水平,但一个常见的方法是基于Craig Reynolds的工作,在他的题为“群羊,牧群和学校:分布式行为模型”的论文中概述。他后来发布了C ++ lib“openSteer”。有关Java applet示例和简化说明,请参阅他的论文Steering Behaviors For Autonomous Characters

flocking behavior and ports of openSteer有很多动作脚本实现。但请注意 - 您不能只复制和粘贴代码。