게임 개발일지: 플레이어 이동과 화면 이동
오늘은 키 입력을 받아 플레이어 캐릭터가 이동하는 방법과 화면을 이동하는 방법을 결정합니다.
플레이어 이동
플레이어 이동은 즉시 일정속도로 움직이기보단 방향키를 누르는 동안 최대속도까지 점점 가속하는 방식입니다. 이 방식은 방향키를 짧게 누르면 조금만 움직이고 누르고 있는 동안에는 충분히 빠른 속도로 이동할 수 있어서 조작감을 향상합니다.
$$ \begin{align} v_{new} &= v_{0} + a \\ x_{new} &= x_{0} + v_{new} \end{align} $$
이전 위치 \( x_{0} \)와 이전 속도 \( v_{0} \), 가속도 \( a \)를 통해 새 위치 \( x_{new} \)를 구합니다.
화면 이동
게임은 플레이어 캐릭터가 게임화면의 중앙에 위치합니다. 플레이어가 이동하면 화면은 플레이어 캐릭터가 가운데 위치한 상태를 유지하고 플레이어 캐릭터의 좌표정보만 수정됩니다.
이 관계를 조금 변형해서, 플레이어 캐릭터가 빠르게 움직이면 화면이 조금 뒤늦게 따라오도록 만듭니다. 이렇게 하면 플레이어 캐릭터의 이동에 속도감이 더해집니다.
$$ \vec V_{new} = \frac{\vec P - \vec V_{0}} {v_{max}} + V_{0} $$
수식에 사용하는 벡터는 pygame.math.Vector2
를 사용했습니다. 플레이어 캐릭터의 현재위치 \( \vec P )\에 맵의 이전 위치 \( \vec V_{0} )\를 빼서 둘 사이의 간격벡터를 구한 뒤 플레이어 캐릭터의 최대 속도인 \( v_{max} )\를 나눈 값이 화면이동량이 됩니다.
플레이어의 최대속도(종단속도)가 높을수록 화면이 늦게 뒤따라오며 이를 통해 플레이어가 더 빠른 속도를 체감할 수 있도록 합니다.
'프로그래밍 > 파이게임' 카테고리의 다른 글
게임 개발일지: 그래픽 리소스와 게임 데이터 (0) | 2022.04.16 |
---|---|
게임 개발 일지: 모듈과 클래스 형식 만들기 (0) | 2022.04.13 |
게임 개발 일지: 기본 개발 환경 구성 (0) | 2022.04.12 |
Pygame: 키보드를 누르고 있으면 타일맵 이동을 가속 (0) | 2022.01.27 |
Pygame [보충]: 등축투영 타일의 좌표 (0) | 2022.01.26 |
댓글