2016-10-14 6 views
0

私はプールゲームのためにサークルをサークルサークルにサークルさせようとしています。彼らが衝突したときにボールが正しい方向にバウンドするようにしようとしています。私はいくつかのチュートリアルを試して、stackoverflowで複数の質問を読むが、誰も本当に私を助けませんでした。Three.jsサークルからサークルへの衝突

私の質問:どのようにこれらの2つのケースで動作するサークルコリジョンを実装することができます: 1:移動していないボールと衝突する移動するボール。 2:私が試したチュートリアルの

1移動するボールと衝突してボールを動かす:

tutorial

これは私が現在持っているコードです、それは何らかの形で働いたが、非常にです不具合:

function newCollide(ball1, ball2) 
{ 
    a = ball1.position.x - ball2.position.x; 
    b = ball1.position.z - ball2.position.z; 
    ab = Math.sqrt(((a * a) + (b * b))); 

    if(ab <= 1.1) 
    { 
     console.log("collision"); 
     ball2.speedX = ball1.speedX; 
     ball2.speedZ = ball1.speedZ; 
     ball1.speedX *= 0.3; 
     ball1.speedZ *= 0.3; 

     ball1.position.x += ball1.speedX; 
     ball1.position.z += ball1.speedZ; 
     ball2.position.x += ball2.speedX; 
     ball2.position.z += ball2.speedZ; 
    } 
} 

何か助けていただければ幸いです。

答えて

1

等しく回転しないディスクの衝突では、ディスクは単に速度ベクトルを交換するだけです。

衝突のテストでは、偽の振動を避けるために、元の動きがお互いに向いていることも確認する必要があります。

衝突中に位置が変わらないため、位置の更新を完全に削除する必要があります。

関連する問題