我正在开发一个游戏项目,我正在研究游戏的AI方面。我希望敌人的物体在他们看到敌人时开始瞄准和射击玩家,我在这样做的方式上遇到了这篇文章: http://www.emanueleferonato.com/2007/04/29/create-a-flash-game-like-security-part-2/
我的问题是你可以在不使用实际线路的情况下做同样的事情吗?你可以使用命中测试点并基本上定义一条线吗?或者其他一些方法,而不是在舞台上放置一个物体。
我正在努力使事情尽可能高效,并且如果可能的话不想使用这种方法。如果您有一些建议,或代码或链接到有用的资源,我将非常感谢!
答案 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
,玩家可以看到警察。我只是为此使用了一个布尔值。