使用box2d GetLinearVelocity()计算速度矢量的速度;

时间:2014-10-15 20:04:15

标签: javascript jquery html5 box2dweb velocity.js

我需要在游戏中找到对象的速度。该游戏使用jquery和jquery.box2d在HTML5中制作。 为此我可以使用这些方法:

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

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

 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)何时降至某个值以下,这样我就可以在游戏中执行新状态。

2 个答案:

答案 0 :(得分:1)

您的问题是,您使用了错误的操作符(Bitwise XOR)来进行方形操作 - see here

您需要做的是:

var speed = Math.sqrt(Math.pow(heroVelX, 2) + Math.pow(heroVelY, 2));

答案 1 :(得分:-2)

平方根函数返回NaN的唯一时间是当平方根的值为负时。如果这是问题,那么测试的方法是尝试在不同的代码行中对值进行平方,然后再对其进行平方。

heroVelX = (heroVelX) * (heroVelX)

另一种潜在地解决问题的方法是添加日志语句,打印速度值和平方根生成前的平方速度。