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 (Not-A-Number) です。これは私を混乱させますか? 誰かがこれを解決するのを手伝ってくれますか?

私が達成したい目標は、(オブジェクト .currenHero の) 速度が特定の値を下回ったときを確認することです。これにより、ゲームで新しい状態を実行できます。

4

2 に答える 2

1

あなたの問題は、二乗を行うために間違った演算子 (ビット単位の 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 に答える