Farseer를 사용한 타일링 물리


9

Farseer Physics Engine에 문제가 있습니다. 타일 된 환경에서는 내 개체가 다른 개체의 모서리와 완벽하게 정렬되어 있어도 때때로 상호 작용할 수 있습니다.

Farseer를 사용한 타일링 물리

나는 Marching Squares 또는 이와 유사한 것을 사용하여 하나의 큰 객체를 계산하고 만들 것을 제안하는 사람들에 대해 읽었습니다. 그러나 각 타일마다 다른 마찰 및 복원과 같은 다른 물리적 특성을 갖기를 원하기 때문에 이것은 옵션이 아닙니다.

내 질문은, 정확히 원인의 원인은 정밀도 문제 또는 다른 것입니까? 물리 엔진 전체를 깨뜨리지 않고 고칠 수있는 방법이 있습니까?


충돌 상자를 한 픽셀 씩 확장하여 비트와 겹칠 수 있는지 궁금합니다. 표면이 아마도 더 연결된 것으로 볼 수 있습니다.
Doug.McFarlane

@ Doug : 방금 테스트했는데 아무런 차이가 없었습니다.
윌리엄 마리아 거

지면 타일은 정체입니까?
bummzack

@bummzack : 그렇습니다.
William Mariager

나는 똑같은 문제가 있습니다. 움직일 수있는 물체가 사각형이거나 원일 때 "튀는"효과가 나타납니다. 또한 플레이어가 특정 상황에서 개별 타일을 "제거"할 수 있기를 원하기 때문에 여러 사각형을 하나의 큰 사각형으로 변환 할 수 없습니다.

답변:


5

Farseer는 반복 솔버를 사용하므로 휠이 고속으로 다른 사각형과 충돌하기 시작할 때마다 물리 시뮬레이션이 아닌 "완벽하게 정렬"되므로 충돌이 발생합니다. "완벽한 픽셀"이되어서는 안됩니다.

사각형을 Edge / Loop 모양으로 변환 한 다음 인공 타일 경계를 만들고 문자가 경계 상자에 들어갈 때 속성을 변경하는 등의 핵으로 다른 물리적 품질을 모델링해야하지만 모든 물리적 품질을 그런 식으로 에뮬레이트 할 수는 없습니다.

조만간 Farseer 대신 타일 기반 물리학을 작성하게 될 것입니다. 게임에 복잡한 물리 퍼즐이 많지 않으면 Farseer를 완전히 버리고 자신 만의 타일 기반 물리를 굴리는 것이 더 간단합니다.


실제로이 타일링 엔진을위한 물리 엔진을 코딩하기 시작했습니다. 우아한 솔루션이없는 것 같습니다.
William Mariager

간단한 해결책은없는 것 같으 므로이 답변을 표시하기로 결정했으며 자신의 솔루션을 코딩하는 것이 좋습니다. 또는 다른 물리학을 가질 수 없으며 Marching Squares를 사용하여 더 큰 몸체를 만들 수 있습니다.
William Mariager

0

충돌 모양을 최적화 할 수 있습니다.이 장면은 네 개의 사각형으로 만 수행 할 수 있습니다.

상관 상자를 결합하여 하나를 더 크게 만들 수 있습니다.

이 비디오는 http://www.youtube.com/watch?v=eyhGckHgkkE를 보여줍니다 .

상자를 추가 할 때 최적화 된 모양의 밝은 파란색 사각형을 볼 수 있습니다.


1
세 번째 단락에서 말했듯이 개체 그룹을 더 큰 개체로 바꾸는 것은 개별 속성을 잃을 수 있으므로 옵션이 아닙니다.
William Mariager

당신은 그들의 phisycal 속성으로 그들을 그룹화 할 수 있습니다. 서로 다른 물리적 블록을 많이 갖는 것이 일반적이지 않다고 생각합니다.
Blau

물리적 특성으로 그룹화하면 지형이 많이 바뀌더라도 동일한 문제가 발생합니다. 드문 일이지만, 그래도 내가 필요한 것입니다.
William Mariager

0

흠 ... 나는 당신의 서클과 관련이 있고 그 아래 타일이 아닌 것 같습니다. 단일 선체를 사용하여지면을 만들고 동일한 결과를 얻는 지 확인하십시오. 그렇지 않은 경우 의심되는 타일입니다. 그렇다면 원은 생각보다 둥글 지 않습니다.


나는 그것을 테스트했다. 하나의 큰 직사각형을 사용하면 문제가 없습니다.
William Mariager

K, 타일은 문제가있다
존 맥도날드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.