2016-10-14 5 views
0

풀 게임을위한 원을 그리기 위해 원을 구현하려고합니다. 나는 공이 충돌 할 때 옳은 방향으로 튀어 나오려고 노력하고있다. 나는 여러 자습서를 시도하고 stackoverflow에 여러 질문을 읽었지만 아무도 정말 나를 도왔습니다.원형 충돌에 원이 세 개 있습니다.

내 질문 :이 두 가지 경우에 작동하는 원형 충돌을 원을 어떻게 구현할 수 있습니까? 1 : 움직이지 않는 공이 움직이지 않는 공과 충돌합니다. 2 : 움직이는 볼이 움직이는 공을 내가 해봤 튜토리얼의

하나의 충돌 :

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

동일한 비 회전 디스크의 충돌에서 디스크는 단순히 속도 벡터를 교환합니다.

충돌 테스트에서 가짜 진동을 피하기 위해 원래의 움직임이 서로를 향하고 있는지 확인해야합니다.

충돌하는 동안 위치는 변경되지 않으므로 위치 업데이트를 완전히 제거해야합니다.