Godot 4.5 에서 구 내벽 걷기를 위한 중력 메커니즘
Godot Engine 4.5 에서 속이 빈 구의 내벽을 걷는 1 인칭 컨트롤러를 구현하려면 비표준 중력 모델이 필요합니다. 중력 방향은 항상 표면 법선을 따라 정렬되며, 이는 구의 중심을 향한다는 뜻입니다. 이는 중력 벡터를 위치의 함수 \vec{g}(\vec{r}) 로 정의합니다.
단순화된 모델은 표면에서 일정한 가속도 g_0 를 가정하지만 (h=0), 최대 0.3R 높이까지의 현실적인 점프를 위해서는 높이 h = R - |\vec{r}| 에 따른 의존성이 필요합니다. 구는 대칭이므로 g 는 h 에만 의존합니다: \vec{g} = g(h) \frac{\vec{r}}{|\vec{r}|}.
모델 원칙:
- 중심에서 중력 없음: g(R) = 0.
- g(h) 의 연속성과 부드러운 변화.
- [0, R] 구간에서 극값 없음.
선형 함수 g(h) = g_0 \frac{R - h}{R} 는 \vec{g} = g_0 \frac{\vec{r}}{R} 로 단순화됩니다. 이는 직관적인 물리를 보장합니다: 중심 근처에서는 느린 호버링, 표면 근처에서는 표준 낙하.
점프 동역학 및 수치 적분
수직 운동은 방정식 \ddot{h} = -g_0 (1 - \frac{h}{R}) 로 설명됩니다. 초기 조건 h(0)=0, \dot{h}(0)=v_0 로 궤적을 계산하려면 오일러 방법 (Euler method) 이 사용됩니다.
게임 물리에서 오일러 방법의 장점:
- 간단한 반복을 통한 간결한 코드.
- 프레임 당 낮은 계산 부하.
- 60 FPS 및 float32 에서 허용 가능한 오차 범위.
해석적 해는 더 복잡하지만 분석에 유용합니다. 그래프에 따르면 v_0 가 중심까지 속도의 80% 미만일 경우 동역학은 지구의 포물선 운동과 유사합니다.
점프 제한 분석
중심까지 점프하여 정지하려면 R 과 g_0 에 의존하는 속도가 필요합니다. 인간의 능력 (v_0 ≤ 5 m/s, g_0=9.8 m/s²) 을 고려할 때 구 반지름은 약 5 m 로 제한됩니다. 더 큰 구는 g_0 를 줄이거나 중심 도달을 불가능하게 만들어야 합니다.
h(t) 에 대한 파라미터 영향:
- R 증가 시 동역학이 평평한 중력에 가까워짐.
- 중심 근처에서 높은 v_0 는 특이한 호버링 유발.
- R ≥ 20 m 일 경우 일반적인 속도에서 점프가 표준적으로 느껴짐.
"특수" 동역학의 경계: v_0 < 0.8 v_center 또는 R > 2R_ref.
주요 요약
- 선형 모델 g(h): 간단한 구현 \vec{g} = g_0 \frac{\vec{r}}{R}, g_0 에서 0 으로 부드러운 변화.
- 오일러 방법: 실시간에 적합, 최소 부하.
- 현실적인 제한: 중심까지 점프는 g_0=9.8 및 v_0=5 m/s 일 때 R < 10 m 에서만 가능.
- 게임 느낌: 특이한 물리는 중심에 접근할 때만 나타남.
- Godot 4.5: 로컬 수직에 초점을 맞춘 뫼비우스 띠 컨트롤러와 유사.
컨트롤러 구현
컨트롤러에서 중력은 "머리에서 발끝" 방향을 결정합니다. 점프 중 비행 동안에는 중력만 고려되며, 공기역학은 선택 사항입니다. 구 중심에 대한 특별한 처리는 0 으로 나누기를 방지합니다.
큰 R (월드 스케일) 의 경우 모델은 대칭성을 유지하지만 낮은 FPS 에서 적분 최적화가 필요합니다. float32 테스트는 안정성을 확인했습니다.
— Editorial Team
아직 댓글이 없습니다.