无需使用碰撞测试对象的 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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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