无需使用碰撞测试对象的 AS3 射线检测

我正在做一个游戏项目,目前正在开发游戏的人工智能方面。我希望敌方对象在看到玩家时开始瞄准并射击,并且我偶然发现了这篇文章,介绍了一种实现方法: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,则表示警察看到了玩家。不过,我只会为此使用一个布尔值。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注