1

我是游戏编程的菜鸟,数学不太好,我正在尝试编写一款 1945 年风格的射击游戏,到目前为止一切都很好,但我陷入了瓶颈,无法弄清楚如何让敌人瞄准玩家.

假设我有敌人精灵和玩家精灵,我如何找出角度和路径?这听起来像是计算两点之间的向量,我一直在阅读文档,特别是这个链接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);

angle 的值始终在 -3 到 3 之间,这看起来根本不是正确的角度。

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

4

1 回答 1

0

angleTo函数返回弧度值,所以运行它会给出实际的角度 degreexCrafty.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;

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

于 2013-05-23T19:38:32.193 回答