2012-10-24 2 views
-3

나는 사용자가 원하는 selection.Can을 사용하여 목표를 게시 할 수 있도록 사용자가 속도, 각도, 방위각을 선택해야하는 축구 게임을 개발 중입니다. 누구든지 게임의 궤도 경로를 만드는 방법을 알려주십시오. 해결책을 찾지 못해서 도와주세요.3d 궤적 경로 계산

+0

그 링크는 나에게 큰 오래된 404를 얻습니다. –

+0

리프트, 드래그, 스핀, 바람, * 등 *을 다루고 있습니까? 그렇지 않다면 초기 속도, 방향 및 중력을 기반으로하는 궤적을 원한다면 포물선으로 정확하게 계산할 수 있습니다. 그렇지 않으면 일련의 작고 이산적인 단계에서 곡선을 계산하는 것이 가장 좋습니다 (또는 끔찍한 통합에 개입해야합니다). – paddy

+0

@paddy : 아니요. 그런 종류의 것을 사용하지 않았습니다. 가능하면 샘플로 저를 공식화 해 주시겠습니까? – user1512727

답변

5

그것은 기본적인 물리학입니다. Z가 올라가 있다고 가정하면 초기 X 및 Y 속도는 일정하며 초기 각 (trig 사용)에 의해 결정됩니다. Z 성분은 완전히 중력에 의해 결정됩니다. 앙각을 취하고 (다시 삼각 함수를 사용하여)이를 구성 요소로 변환합니다. 그것은 당신의 초기 Z 속도입니다.

이것은 바람, 스핀 및 드래그를 무시하는 가장 간단한 공식입니다 ( 공은 비행 중에 옆으로 움직이지 않고 중력에 의해서만 영향을받습니다).

vx = power * cos(elevation) * sin(azimuth); 
vy = power * cos(elevation) * cos(azimuth); 
vz = power * sin(elevation); 

이제 시간 t의 위치가 간단한 뉴턴 물리학이다

x = vx * t; 
y = vy * t; 
z = vz * t - 0.5 * g * t * t; 

g는 중력 (9.81 m/s/s)

하지만 직접 이들 수식을 사용하여하지 않는다 반송 (bounce) 등을 계산하게하십시오.이를 위해 단계적으로 계산해야합니다. 즉, 작은 시간 동안 (dt) 현재 위치와 속도를 가져 와서 수정합니다.

vx;    // unchanged 
vy;    // unchanged 
vz -= g * dt; // gravity 
x += vx * dt; 
y += vy * dt; 
z += vz * dt; 

당신의 Z-위치가 지하가는 경우

, 당신은 바운스를 할 수 있도록 vz을 부정. 서페이스에 부딪혔을 때 비슷한 반사를합니다 (서페이스 법선에 대한 벡터 반영).

비행이 스핀 (Magnus 효과) 및 기타 힘의 영향을 받기를 원하는 경우 상황이 더 복잡합니다. 공이 튀어 오를 때마다 에너지가 손실되기 때문에 반사를 줄이기를 원할 수도 있습니다.

그건 너에게 달렸어. 나는 기본을 주었고 나는 그 도움이되기를 바란다.

발사체 동작을 읽어야합니다. 일단 기본적인 작업을하고 모션을보다 현실감있게 만들고 싶다면 공기 역학/스포츠 공의 유체 역학을 읽으십시오 ... Rabindra Mehta의 책이나 기사는 좋은 출발점이 될 것입니다.