很抱歉,如果标题不明确,我不知道如何真正说出我想要做的事情。
所以,无论如何,我已经创建了一个基本的僵尸游戏,绿色方块跟着你,你可以死并杀死僵尸。
问题是,如果有大量的僵尸,他们都会进入彼此并制造一个方格,因为他们正在指向他们所指向的地方,因此碰撞太难了),有没有一种方法可以让它们足够分散,以便它们永远不会进入彼此?
这是我移动僵尸的代码:
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();
}
}
另外,对不起,如果这只是碰撞,但只是间隔,我只是想要一种方法来阻止他们合并。
答案 0 :(得分:0)
这可能超出了你目前的编程水平,但一个常见的方法是基于Craig Reynolds的工作,在他的题为“群羊,牧群和学校:分布式行为模型”的论文中概述。他后来发布了C ++ lib“openSteer”。有关Java applet示例和简化说明,请参阅他的论文Steering Behaviors For Autonomous Characters。
flocking behavior and ports of openSteer有很多动作脚本实现。但请注意 - 您不能只复制和粘贴代码。