플레이어가 계단을 매끄럽게 달릴 수 있도록 다른 블록과의 교차점을 확인하는 경계 상자

플레이어가 항상 오른쪽으로 달려 있지만 지형이 항상 수평이 아닌 2D 플랫폼 게임이 있습니다. 예:

예

나는 플레이어 박스와 다른 블록과의 교차점을 확인하는 경계 상자 충돌 시스템을 구현하여 큰 블록을 만났을 때 플레이어의 실행을 중지하여 점프해야하지만 계단을 놓을 때 그를 원합니다. 그가 수평 바닥에있는 것처럼 매끄럽게 달립니다. 충돌 시스템을 사용하면 계단을 통과하여 계단을 통과해야합니다!

계단 가장자리 사이에 선을 생성하고 그 선에 플레이어 움직임을 부과하는 것에 대해 생각했습니다. 어떻게 생각하십니까? 더 영리한 일이 있습니까?

여기처럼



답변

경계 상자를 회전시킬 수 있다면 플레이어의 발에 45도 회전 상자를 놓고 회전하지 않은 상자와 결합하여 나머지 신체를 나타냅니다. 그렇게하면 플레이어가 자동으로 작은 것을 넘길 수 있습니다.

그러나 플레이어 모델과 계단이 잘릴 수 있습니다.

또 다른 아이디어는 캐릭터 상자에서 너비가 더 큰 캐릭터의 머리부터 kness까지 하나의 경계 상자를 배치하는 것입니다.

플레이어가 상자 ‘A’에없는 것과 충돌하면 플레이어가 충돌 한 것의 상단으로 플레이어를 이동할 수 있습니다

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step
     |     | |
--------------------------------------------- <- ground


답변

비디오 게임에서 계단을 다루는 데는 세 가지 일반적인 접근 방식이 있습니다.

“Mario”접근 방식은 계단을 올라 가기 위해 점프해야한다는 것입니다.

“Castlevania”방식은 계단을 오르 내리는 것이 다른 종류의 움직임이라는 것입니다. 컨트롤러에서 ‘위로’를 눌러야하며 계단을 가로 지르는 특수 “계단 등반”애니메이션이 재생됩니다. 이것의 변형은 “레지던트 이블 (Resident Evil)”접근 방식으로, 계단 위 / 아래로 이동하는 것은 플레이어가 인터랙션 버튼을 누를 때 재생되는 완전한 컷신으로 취급됩니다. 대화식 계단 등반은 허용되지 않습니다.

“거의 모든 사람”접근 방식은 여러분이 언급 한 방법입니다. 계단을 마치 계단처럼 취급하십시오. 어떤 종류의 게임인지에 따라 계단을 기준으로 다른 높이에 경사로를 배치 할 수 있습니다. 일반적으로 2D 게임에서 경사로가 각 계단 단계의 하단 모서리와 수평이면 경사면이 실제로 경사입니다. 3D 게임에서는 경사도가 수평이면 일반적으로 눈에 띄지 않습니다. 각 단계의 상단 모서리로 (2D 게임에서와 같이 캐릭터의 발이지면 위에 떠 있는지 확인하기가 더 쉬우므로이를 최소화하고 싶은 반면, 3D 게임에서는 캐릭터의 발이지면을 통해 클리핑되는지 확인하기가 더 쉽습니다. 최소화하고 싶습니다).


답변

내가 만난 대부분의 방법은 이미 위에서 언급했지만 아직 언급되지 않은 방법이 하나 더 있습니다. 플레이어가 충분히 짧은 수직 장애물 (예 : 1/3 높이)을 발견하면 상단에 놓으십시오. 예를 들어 Minecraft와 소스 엔진은 이러한 상황에서 이러한 접근 방식을 취합니다. 또한이 방법을 사용하면 모든 물리에 순수한 AABB를 계속 사용할 수 있으며 플레이어는 계속해서 계단을 올라갈 수 있습니다.


답변

나는 현재 엔진의 비슷한 부분을 연구하고 있으며 계단 / 경사를 처리하는 방법은 램프 텍스처의 투명 픽셀을 계산하고 발견 된 양만큼 플레이어의 객체를 오프셋하는 것입니다.

이 기사에서 자세히 설명하는 높이 맵 아이디어와 유사합니다.
http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

나는 그것이 실제로 당신이 찾고있는 것이라고 상상하고 계단의 상승에 따라 다른 애니메이션을 재생하도록 선택할 수 있습니다.

이 기사에는 다양한 경사 개념에 대한 좋은 개요가 있습니다.
http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/


답변