我需要在游戏中找到对象的速度。该游戏使用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)何时降至某个值以下,这样我就可以在游戏中执行新状态。
答案 0 :(得分:1)
您的问题是,您使用了错误的操作符(Bitwise XOR)来进行方形操作 - see here。
您需要做的是:
var speed = Math.sqrt(Math.pow(heroVelX, 2) + Math.pow(heroVelY, 2));
答案 1 :(得分:-2)
平方根函数返回NaN的唯一时间是当平方根的值为负时。如果这是问题,那么测试的方法是尝试在不同的代码行中对值进行平方,然后再对其进行平方。
heroVelX = (heroVelX) * (heroVelX)
另一种潜在地解决问题的方法是添加日志语句,打印速度值和平方根生成前的平方速度。