나를 당혹스럽게 한 가지가 있는데, 이것이 플랫 포머에서 '가짜 충동'점프를 구현하는 방법입니다. 내가 무슨 말을하는지 모른다면 마리오, 커비, 동굴 이야기에서 인용 한 점프를 생각해보십시오. 그들의 공통점이 무엇입니까? 점프 높이는 점프 버튼을 얼마나 오래 누르고 있는지에 따라 결정됩니다.
이 캐릭터의 '임펄스'는 실제 물리학에서와 같이 점프하기 전에 만들어지는 것이 아니라 공중에서 있을 때입니다. 즉, 최대 높이의 중간에서 손가락을 아주 잘 들어 올릴 수 있습니다. 그것과 완전 정지 사이의 탈 가속; 홉을 살짝 누르고 길게 뛸 수있는 이유는 무엇입니까? 나는 그들이 궤도를 호로 유지하는 방법에 매료되어 있습니다.
내 현재 구현은 다음과 같이 작동합니다.
점프 버튼을 누르고있는 동안 중력은 꺼지고 아바타의 Y 좌표는 일정한 중력 값만큼 감소합니다. 예를 들어, 틱당 Z 단위에 도달하면 틱당 Z 단위가 증가합니다.
버튼에서 손을 떼거나 한계에 도달하면 아바타는 속도가 0에 도달 할 때까지 X 단위를 덮는 양만큼 속도가 느려집니다. 일단 그것이 속도가 중력과 일치 할 때까지 가속됩니다-예를 고수하면서, 여전히 X 단위를 덮으면서 0에서 Z 단위 / 틱으로 가속한다고 말할 수 있습니다.
그러나이 구현은 점프를 너무 대각선으로 만들고 아바타의 속도가 중력보다 빠르지 않으면 현재 프로젝트에서 너무 빠릅니다 (틱 당 약 4 픽셀로 이동하고 틱당 10 픽셀로 중력은 40FPS의 프레임 속도), 수평보다 수직입니다. 플랫 포머에 익숙한 사람들은 캐릭터의 아크 점프는 게임의 중력만큼 빠르지 않더라도 거의 항상 더 멀리 점프 할 수 있으며 올바르게 플레이하지 않으면 제대로 점프하지 못한다는 것을 알 수 있습니다 매우 직관적입니다. 구현이 매우 성가신 것을 증명할 수 있기 때문에 이것을 알고 있습니다.
누구든지 비슷한 역학을 시도했지만 성공했을 수도 있습니까? 이런 종류의 플랫 포머 점프 뒤에 무엇이 있는지 알고 싶습니다. 이 경험을 한 번도 경험하지 못하고 진행하고 싶다면 올바른 방법이 아닌 한 설명 된 구현을 수정하거나 향상시키지 마십시오. 할퀴다. 나는 당신이 중력, 물리 또는 다른 것을 사용하는지 상관하지 않습니다.
또한 언어 별 코딩을 피하기 위해 프레젠테이션을 원합니다. C ++ 예제 또는 Delphi를 공유하는 것과 같이 ... 프로젝트에 XNA 프레임 워크를 사용하고 있고 C #을 신경 쓰지 않는 한 다른 코드를 읽는 데 인내심이 많지 않습니다. 다른 언어의 특정 게임 개발자는 우리가 여기서 달성 한 것에 관심이 있으므로 의사 코드를 고수하지 마십시오.
미리 감사드립니다.