현재 Android 용 게임을 개발 중이며 내가 갖고있는 문제에 대한 전문 지식을 알려드립니다.Android 게임 개발 : 충돌 감지 실패
배경 :
내 게임 필요한 속도를 계산을 수행하기 전에 델타 시간 값을 고려 프레임 레이트 독립된 움직임을 통합한다.
게임은 전통적인 2D 플랫폼입니다.
시트 문제점 :
여기 (간체) 내 문제입니다. 내 캐릭터가 플랫폼 상단에 사각형으로 서있는 것처럼 보자 ("중력"은 characterVelocityDown의 일정한 하향 속도 임).
I는 다음과 같이 (아래 Y 축 점 가정) 충돌 검출 정의한:
가 은 characterFootY가 내 사각형 캐릭터 염기의 Y 좌표이다 감안 platformSurfaceY 상부 Y이다을 내 플랫폼의 -coordinate 및 platformBaseY가 낮은 내 플랫폼의 y 좌표입니다 :
if (characterFootY + characterVelocityDown > platformSurfaceY && characterFootY + characterDy < platformBaseY) {
//Collision Is True
characterFootY = platformSurfaceY;
characterVelocityDown = 0;
} else{
characterVelocityDown = deltaTime * 6;
이 방식은 페이지를 작동 게임이 규칙적인 속도로 작동 할 때 오류가 있습니다. 게임이 감속하는 경우에는, (이전 프레임과 현재 프레임 사이에 경과 된 시간)를 deltaTime이 커지고, characterFootY + characterVelocityDown은 떨어진다 충돌 검출 및 특성을 정의하는 경계를 초과 똑바로 (마치 텔레포트처럼).
이 문제를 방지하려면 어떻게해야합니까?
사전에 도움을 주셔서 감사 드리며 앞으로도 학습을 기다리고 있습니다!
다른 사람이이 문제를 겪고있는 경우이 문제를 해결하려면 deltaTime 값을 제한하여 특정 값 이상인 경우 cap으로 설정하면됩니다. 이렇게하면 게임 속도가 일치하지 않지만 대부분의 경우 괜찮습니다. – SeveN
비교가 수행 될 수 있기 때문에 이전 및 이후 델타 값을 모두 갖고 있습니까? – cjk