"더블 점프"를 올바르게 구현


23

Corona (시험판 버전)를 사용하여 2D iPhone 게임을하고 있습니다. 포럼을 사용할 수 없습니다. 게임은 하늘을 통해 떨어지는 캐릭터와 관련이 있으며, 캐릭터에 대해 "더블 점프"를 구현하려고합니다. 나는 코로나의 물리 라이브러리를 사용하여 캐릭터를 떨어 뜨리고, 지금까지 그를 점프시키는 가장 좋은 방법은 수직 임펄스 방법을 사용하는 것입니다.

object:applyLinearImpulse(0, -0.4, object.x, object.y)

내가 직면하는 문제는 캐릭터가 막 시작될 때 (수직 속도가 낮음), 실제로 높이 뛰고, 잠시 동안 떨어지면 (수직 속도가 높음) 점프가 무시할 수 있다는 것입니다. 가장 좋은 해결책은 속도와 상관없이 점프를 동일하게 만들기 위해 입력으로 속도와 함께 일종의 방정식을 사용하는 것 같지만 그 방정식이 무엇인지 알 수는 없습니다.

그래, 그게 내 생각 전부 야 마지막 질문은 물리학으로 어떻게 이중 점프를 정확히 구현합니까? 내 문제에 대한 적절한 방정식이 있습니까? 다른 접근법을 취해야합니까? Smash Bros와 같은 게임에서 이전에 수행되었으므로 반복 가능한 솔루션이 있습니까?

답변:


37

수직 속도를 0으로 설정하고 첫 번째 점프를 수행하는 데 사용하는 것과 동일한 코드를 호출하십시오.


4
오. 그것은 ... 실제로 꽤 잘 작동합니다. 너무 단순해서 생각하지 않은 것에 대해 어리석은 느낌이 듭니다. 오 잘 감사!
Jesse J

5
종종 필요한 것보다 더 복잡하게 만드는 유혹을
느끼고

2
우아한 답변!
lathomas64

1

확실하지 않지만 UT2K4와 같은 게임은 다음과 같은 논리를 사용할 수 있다고 생각합니다.
if (이미 점프 &&! doubled jumped & &! touching ground && velocity.up is 대략 0.0f) DoDoubleJump ();

y 또는 z 구성 요소의 위치는 어디입니까 (어떤 구성 요소에 따라 다름)
이는 플레이어가 첫 번째 점프의 최대 높이에 있고 다시 시작하려고 할 때만 이중 점프를 수행 할 수 있음을 의미합니다.
이 방법은 약간의 기술을 만들어 내기 때문에이 방법이 마음에 듭니다 ( "velocity.up is 0.0f"내에서 발생해야합니다).
원하는 것에 따라, 예를 들어 여전히 위로 올라갈 때 두 번만 점프 할 수 있도록 양의 숫자로 "약 0.0f"를 편향시킬 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.