2012-01-14 2 views
2

저는 임의의 크기의 사각형을 격자 기반 지형 설정 (플랫폼 게임용)과 충돌시킬 수있는 코드를 작성했습니다.지상 충돌 코드에서 "딸꾹질"고정?

난 내 사각형이 두 타일의 경계에 걸쳐 지상으로 뽑아지기로 임의 "중지 - 업"으로 실행을 제외하고 잘 작동
For each tile the rectangle intersects with, do: 
    Calculate the primary axis that this tile is on with respect to the rectangle 
    Calculate the interpenetration of this tile into the rectangle along the primary axis (factoring in previous position offsets from other tiles) 
    If this tile is solid, add that interpenetration to a total collision resolution vector 
Adjust the rectangle's position by the total calculated collision resolution vector 

, 내 코드 : 나는 그것을 할 방법이 같은 것입니다 X 축을 통해이 새로운 타일과의 충돌을 해결할 필요가 있다고 판단하여 수동으로 지형에서 밀려 나오지 않으면 직사각형의 움직임을 멈 춥니 다.

한 번에 한 축의 충돌 만 해결하려고 했으므로 (Y 축 해상도가 가장 큰 경우 x 축 충돌 해상도를 무시하고 그 반대의 경우도 마찬가지 임) 사각형이있을 때 지터가 발생합니다. 모퉁이에 눌려져 있습니다 (실제로는 두 축을 동시에 해결해야하는 상황 임).

간단히 말해서이 두 가지 문제를 동시에 해결할 수있는 방법은 무엇입니까?

답변

0

경우에 따라 무한대의 상호 작용을하기 때문에 매우 어려운 문제입니다.

속도와 정확성 사이에서 선택 : 모든 개체에 대한

1.add 상호 작용 카운터 (사각형) 충돌 감지 전에

  • 어떤 2.if 제로

에 모든 카운터를 재설정 충돌시 모든 개체에 대한 증가 카운터가 감지되었습니다.

3.if 카운터 값이 한계 값을 초과합니다. 해당 객체에 대한 상호 작용의 범위

강제로 수행되지만 끊어지지 않을 경우에도 이러한 접근 방식은 몇 가지 딸꾹질을 만들 수 있습니다.