2016-09-18 6 views
0

私は赤い警告のスタイルのゲームを作ろうとしています.JSの技を磨くだけで、ゲーム開発の基本的な理解を得ることができます。ブロックメッシュを地面のある部分から別の部分に移動しようとしています。ただし、ブロックをアニメートするのではなく、瞬時に移動します。Babylon.jsでメッシュを動かす際の問題

ここに私のbabylonjs-遊び場が...私は、問題のコードのこのブロックと思い... http://www.babylonjs-playground.com/#OYE6Q

だwhileループを使用することにより

var moveUnit = function (position, item) { 
    if (position.x > 0) { 
     while (item.position.x < position.x) { 
      item.position.x += 0.001; 
     } 
    } else { 
     while (item.position.x > position.x) { 
      item.position.x -= 0.001; 
     } 
    } 

    if (position.z > 0) { 
     while (item.position.z < position.z) { 
      item.position.z += 0.001; 
     } 
    } else { 
     while (item.position.z > position.z) { 
      item.position.z -= 0.001; 
     } 
    } 
} 

答えて

1
while (item.position.x < position.x) { 
     item.position.x += 0.001; 
    } 

、あなたは位置を更新していますゲームの同じフレーム内の増分で最終位置に移動します。

item.position.x = position.x; 

このため、最初の位置から1つのフレームから次のフレームの最終位置にジャンプします。あなたの位置を更新する方法にかかわらず。

時間の経過とともに動きをシミュレートするには、オブジェクトを複数フレームにわたって目標に向かって増分して移動する必要があります。インクリメントが正しく選択され、フレームが十分に速い場合、滑らかな動きのように見えます。

これを達成するには、オブジェクトがフレームを横切ってどこを動いているのかを考えなければならず、時間の概念をゲームに導入する必要があります。

概念の例については、this tutorialをご覧ください。

+1

が、私はものを維持する時間を考え出し、舞台裏で抽象化された;'、I'LLそのリンクを見て、ありがとう! –

1

BABYLON.jsにはアニメーション機能が組み込まれており、自動的にメッシュの時間制約を処理します。ここに実例へのリンクがあります!あなたは `engine.runRenderLoop(()=> scene.render())を呼び出したときに私はそれが理にかなっていると思います

http://www.babylonjs-playground.com/#OYE6Q#4

関連する問題