1

我需要在游戏中找到物体的速度。该游戏是用 jquery 和 jquery.box2d 用 HTML5 制作的。为此,我可以使用以下方法:

 GetLinearVelocity().x;
 GetLinearVelocity().y;

然后我试图从这段代码中计算速度,但是当我 console.log 时得到一些没有意义的值。这是我的代码:

 var heroVelX = game.currentHero.GetLinearVelocity().x;
 var heroVelY = game.currentHero.GetLinearVelocity().y;

 var speed = Math.sqrt(heroVelX^2 + heroVelY^2);
 console.log(speed);

console.log 中的一些值是数字,但大多数是 NaN(非数字),这让我感到困惑?有人可以帮我解决这个问题吗?

我想要实现的目标是查看(对象.currenHero)的速度何时降至某个值以下,这样我就可以在游戏中执行一个新状态。

4

2 回答 2

1

您的问题是您使用了错误的运算符 ( Bitwise XOR ) 来进行平方 -请参见此处

你需要做的是:

var speed = Math.sqrt(Math.pow(heroVelX, 2) + Math.pow(heroVelY, 2));
于 2014-10-19T10:36:16.990 回答
-2

平方根函数应该返回 NaN 的唯一时间是平方根值为负数时。测试这是否是问题的一种方法是在对它们进行平方根之前尝试对不同代码行中的值进行平方。

heroVelX = (heroVelX) * (heroVelX)

另一种可能对问题有所了解的方法是添加日志语句,打印出速度的值和平方根之前的速度平方。

于 2014-10-15T20:23:38.987 回答