我是游戏编程新手,数学不太好,我正在尝试编写一款 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/