AS3视线不使用hittest对象。

时间:2011-10-01 09:01:03

标签: actionscript-3 algorithm artificial-intelligence hittest

我正在开发一个游戏项目,我正在研究游戏的AI方面。我希望敌人的物体在他们看到敌人时开始瞄准和射击玩家,我在这样做的方式上遇到了这篇文章: http://www.emanueleferonato.com/2007/04/29/create-a-flash-game-like-security-part-2/

我的问题是你可以在不使用实际线路的情况下做同样的事情吗?你可以使用命中测试点并基本上定义一条线吗?或者其他一些方法,而不是在舞台上放置一个物体。

我正在努力使事情尽可能高效,并且如果可能的话不想使用这种方法。如果您有一些建议,或代码或链接到有用的资源,我将非常感谢!

1 个答案:

答案 0 :(得分:3)

只需使用计算,但不能使用

这是重要的代码

dist_x = _root.hero._x-_x;
dist_y = _root.hero._y-_y;
dist = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
angle = Math.atan(dist_y/dist_x)/(Math.PI/180);
if (dist_x<0) {
    angle += 180;
}
if (dist_x>=0 && dist_y<0) {
    angle += 360;
}
wall_collision = 0;
for (x=1; x<=dist; x++) {
    point_x = _x+x*Math.cos(angle*Math.PI/180);
    point_y = _y+x*Math.sin(angle*Math.PI/180);
    if (_root.wall.hitTest(point_x, point_y, true)) {
        wall_collision = 100;
        break;
    }
}

如果wall_collision = 100,玩家可以看到警察。我只是为此使用了一个布尔值。