我正在做一个游戏项目,目前正在开发游戏的人工智能方面。我希望敌方对象在看到玩家时开始瞄准并射击,并且我偶然发现了这篇文章,介绍了一种实现方法:http://www.emanueleferonato.com/2007/04/29/create-a-flash-game-like-security-part-2/
我的问题是,是否可以在不使用实际线条的情况下完成同样的事情?例如,您可以使用点击测试点并基本上定义一条线吗?或者,是否有其他方法可以在不实际将对象放在舞台上的情况下做到这一点。
我试图尽可能地提高效率,如果可能的话,不想使用这种方法。如果您有任何建议、代码或指向有用资源的链接,我将不胜感激!
回答:
只需使用计算,而不需要使用线条
以下是重要的代码
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
,则表示警察看到了玩家。不过,我只会为此使用一个布尔值。