javascript - CraftyJS如何计算2个 Sprite 之间的矢量?

标签 javascript math vector angle

我是游戏编程新手,数学不太好,我正在尝试编写一款 1945 风格的射击游戏,到目前为止一切都很好,但我遇到了瓶颈,我不知道如何让敌人瞄准在播放器处。

假设我有敌人 Sprite 和玩家 Sprite ,我如何找出 Angular 和路径?这听起来像是计算两点之间的向量,我一直在阅读文档,特别是这个链接 http://craftyjs.com/api/Crafty-math-Vector2D.html

我只是不知道该怎么做,我尝试了以下方法

var enemyV = Crafty.math.Vector2D(enemy.x, enemy.y);
var playerV = Crafty.math.Vector2D(player.x, player.y);
var angle = enemyV.angleTo(playerV);

Angular 值总是在-3到3之间,这看起来根本不是直 Angular 。

我希望有 CraftyJS 经验的人可以帮助我。

最佳答案

angleTo 函数返回弧度值,因此运行该函数将给出实际的 Angular Degreex Crafty.math.radToDeg(radianValue)

要瞄准玩家并使子弹朝该方向行进,您只需得到 2 点之间的差值 bullet.x - player.x'bullet.y - player.y' 然后应用如下所示的增量速率 (

bullet.x_diff = (target.x - bullet.x)*0.02;
bullet.y_diff = (target.y - bullet.y)*0.02;

然后在enterframe循环内:

this.x += this.x_diff;
this.y += this.y_diff;

一旦你明白了,你应该通过除以点之间的距离来标准化你的差异。

关于javascript - CraftyJS如何计算2个 Sprite 之间的矢量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477759/

相关文章:

javascript - 如何在不刷新浏览器的情况下获取更改?

javascript - AngularJS ngModelController

javascript - 复选框列表检查功能

javascript - 通过模拟在地面上滚动的真实世界轮子旋转一个圆来平移平面的数学是什么?

c++ - 准确计算 1 到 10 之间的值的谐波数

c++ - 作为 std::vector 包装器的用户定义容器应该继承还是包含 std::vector?

c++ - 如何从 vector 中删除元素并更新迭代器?

javascript - req.body 在 Express 应用程序的后路由中未定义

python - Numpy 数组切片期间的行与列向量返回

Mysql - GPS 位置 x 3 以及如何从搜索中排除任何位置结果