2

明確にするためにammo.js-mscriptenを使用したBullet Physicsのポートです

力を入れて押す必要があるキャラクター (基本的にはブロック) があります。フォースのすべての方法を試しましたが (と思います)、それでもブロックを動かすことができません。

setVelocity(1,0,0)ブロックを動かすことすらありません - 重力がブロックに作用するのを止めるだけです! applyImpulse([0,0,200000],[0,0,0])絶対に何もしません。
applyForce([0,0,200000],[0,0,0])絶対に何もしません。

4

1 に答える 1

3

ammo.js は emscripten ポートであるため、ネイティブのデータ型を使用して通信する必要があります...

したがって、速度を設定するには、body.setLinearVelocity(new Ammo.btVector3(1,0,0)); が必要です。

applyForce と applyImpulse についても同様です。

私のコードでは、通常、一時的な btVector3 のセットを作成し、それらをファイル全体で使用して、割り当てとガベージ コレクションのオーバーヘッドを削減しています。

var tbv30 = new Ammo.btVector3();

function setBodyVelocity(body,x,y,z){
    tbv30.setValue(x,y,z);
    body.setLinearVelocity(tbv30);
}

頑張ってください:D

于 2014-12-19T02:18:09.190 に答える