2013-08-10 3 views
0

내 게임의 플레이어가 화면 중앙에 배치되어 있고 배경을 움직여서 스크롤 할 수 있습니다.부드러운 타일 기반 동작을 구현하는 방법

pygame.key.get_pressed()의 키 목록이 표시됩니다. 플레이어의 이동 재사용 대기 시간이 종료되면 이동 기능이 호출됩니다. 이 함수는 한 타일의 이동 방향으로지도를 스크롤합니다.

그러나 움직임이 원활하지 않습니다. 다음 타일로 '점프'합니다.

플레이어가 작은 단계 (속도 * dt)로 이동하지만 이동 기능이 호출 될 때마다 하나의 타일 거리 만 이동하도록 이동 시스템을 구현하려면 어떻게해야합니까? 게임은 각각의 작은 단계 사이에서 렌더링되어야합니다.

전체 여기 소스 : https://github.com/HCollings/rpg-game/blob/alternate_movement/game.py

답변

1

애니메이션 및 운동은 모든 당신이 인식하는 것보다는 실제로 무슨 일이 일어나고 있는지에 대한 있습니다. 그리드 시스템에서는 코드의 드로잉 부분을 가져 와서 게임 플레이 위치와 독립적으로 드로잉 위치를 업데이트함으로써 실제 메 커닉에서 멀리 떨어진 플레이어의 시각적 인 동작을 추상화 할 수 있습니다.

점핑과 관련된 문제는 일반적으로 일종의 보간 기법으로 처리됩니다. lerp()는 선형 보간법을 제공하는 공통 함수이지만 아래 예제에서는 다른 기법을 사용합니다. http://paulbourke.net/miscellaneous/interpolation/

당신은 목적지, 방향, 움직임의 "사용되지 않은"단위로 움직임을 구현할 수 : 여기

보간 기술에 대한 자원이다. 새 사각형으로 이동하려면 방향을 설정하고 "증가하지 않은 증분 카운터"에 표준 증분 값 (하나의 사각형 표시)을 추가합니다. 그런 다음 새 위치에서 그래픽에 아직 증가량만큼 오프셋을 긋습니다. 한 번에 두 개 이상의 사각형을 이동하려는 경우 사용되지 않은 증분 수를 늘립니다.

무브먼트가없는 한 이동은 이동 포인트를 생각할 때만 발생합니다. 이 기술은 또한 시각적 충돌 탐지에 적합합니다. 남은 증분 횟수가 움직이는 제곱 수 사이의 총 증분 (~ 25 %?)의 일부분이면 플레이어가 보는대로 사각형이 "실질적으로"그래픽이됩니다.

+0

감사합니다. 기본적으로 구현했습니다. move -> points = 64. render -> bg.rect를 변경하고 points - = 1. –

관련 문제