2017-11-21 2 views
1

플레이어가 한 플랫폼에서 다른 플랫폼으로 이동하기를 원하는 게임이 있습니다. 제 플랫폼에는 상자 충돌자가 있습니다.Unity OnTriggerEnter 트리거링이 잘못되었습니다.

나는 점프를 시도 할 때 가끔 내 선수가 충돌 자의 측면을 치고 반대편을 향해 몸을 굽히고 넘어지면서 마침내 죽음의 조건을 유발합니다. 이를 방지하기 위해 플랫폼 옆에 트리거 충돌 장치를 놓았습니다. 나는 또한 트리거 콜라이더를 박스 콜 리더의 약간 아래에 놓았는데, 왜냐하면 내 플레이어가 가장자리를 뛰어 넘을 경우 두 가지를 모두 활성화하지 않기 때문입니다.

트리거가 활성화되면 나는 죽음 함수를 사용합니다. 그렇지 않으면 플레이어가 단단한 점프를하고 다른 게임 논리로 계속 진행된다고 가정합니다. 그러나 플레이어가 플랫폼의 가장자리에 올랐을 때 충돌 발생 기능과 on 트리거 이벤트가 발생하는 경우가 있습니다.

내 장면보기에서 플레이어 콜 라이더가 플랫폼 아래의 트리거 충돌기에 들어 가지 않았 음을 알기 때문에 이것은 이상합니다.

나는 레이크 캐스트를 믹스에 추가하려고했지만 아직 레이크 캐스트에도 불구하고 플레이어가 트리거를 입력하지 않은 경우 OnTriggerEnter이 (가) 트리거되는 이유를 모르겠다.

플레이어가 약간의 속도로 떨어지고 있기 때문에 플레이어 충돌기가 플랫폼 충돌기에 밀려들 수도 있지만 장면보기에 표시 될 것이라고 생각했습니다.

picture with the mesh and colliders

picture with collider orientation only

내 질문에 내가 플랫폼 입자 가속기에 착륙 할 때, 어떻게 트리거 입자 가속기 트리거 할 수 있습니까? 나는 그것의 꼭대기에서 뛰고있다. 플랫폼을 완전히 놓친 경우 트리거가 예상대로 작동하지만 플랫폼 상단에 착륙 할 경우 트리거 충돌 장치와 겹치지 않고 계속 발사합니다.

/E는

sketch

이 내 3D 환경의보기에 측면입니다. 그것은 정확한 묘사가 아니지만 당신들을 위해 그것을 단순화하는 것입니다. 내 플레이어가 하나의 플랫폼에서 다른 플랫폼으로 점프하고 있습니다.이 두 플랫폼은 모두 상자 콜리더가있는 3 차원 큐브입니다. 두 플랫폼 사이에는 약간 낮은 레벨에서 트리거 콜라이더가 있습니다.

내 플레이어가 게임 콜라 이더를 치면. 제 질문은 때로는 플레이어가 스케치에서와 같이 상자 충돌 자의 가장자리에 착륙하는 경우가 있지만 어떤 이유로 인해 트리거 충돌자가있는 플레이어 충돌기가 침투하지 않을 때 게임 오버 트리거 충돌자가 트리거됩니다. 그들 사이에 충분한 공간이있어서 그들은 심지어 만지작 거리지 않습니다.

총계 - 내 플레이어와 트리거 콜 리더 사이에 눈에 띄는 접촉이 없을 때 내 ontiggerter가 실행 중입니다. 질문은 이유가 무엇입니까?

actual game screenshot

당신이 볼 수 있듯이, 내 플레이어 입자 가속기는 플랫폼 상자 입자 가속기의 상단에 단단히 아직 ontriggerenter 충돌 형 가속기에 대한 다음과 플랫폼이 트리거 아래 내 플레이어가 간다, 그리기 선을 무시 죽음의 애니메이션으로. 이제는 더 구체적으로 설명 할 수 없습니다. 지금 저를 도와 주시고 왜 이것이 일어나고 있는지 설명해주십시오. 내 선수는 그들이 만지지 않는 방아쇠에서 멀리 떨어져 있습니다.

+0

질문을 귀하의 코드로 편집 한 후 읽기 쉽도록 분리하십시오. – Programmer

+0

이것은 코드와 정확히 관련이 없습니다. 좀 더 이해하기 쉽도록 스크린 샷을 넣으십시오. –

+0

2 개 이상의 플랫폼을 볼 수 있으며, 1 개는 다른 내부에 있고 1 개는 매우 낮은 높이입니다. 상자 충돌을 단순화해야합니다. 큰 해상도에 필요한 정밀도는 리소스가 매우 비싸고 올바르게 설정하지 않았는지 확인하십시오. 더 큰 박스와 충분한 거리, 또 다른 하나는 내부에 없음 – joreldraw

답변

0

항상 그렇듯이 Stackoverflow에서 응답이 없습니다.

어쨌든 내 문제에 대한 해결책을 찾을 수있었습니다. 솔루션은 추악하고 공유 할만한 가치가 없었지만 충돌 감지 기능이있는 사람은 다음과 같은 것들 또는 다음을 조합하면 솔루션을 찾을 수 있습니다.

1 - 서로 충돌하는 강체를 연속 또는 연속 동적으로 변경하는 것을 고려할 수 있습니다. 이렇게하면 성능 오버 헤드는 증가하지만 강체 사이의 충돌은 훨씬 더 잘됩니다.

2 - 설정에서 물리 관리자는 기본 솔버 반복을 설정하려고 할 수 있습니다. 설명서에서 : Solvers는 조인트의 움직임 또는 겹치는 리지드 바디 (Rigidbody) 구성 요소 간의 접촉 관리와 같은 수많은 물리학 적 상호 작용을 결정하는 작은 물리 엔진 작업입니다. 기본 솔버 반복을 사용하여 모든 물리 프레임에서 Unity가 실행되는 솔버 프로세스의 수를 정의하십시오. 이것은 솔버 출력의 품질에 영향을 미치며 기본값이 아닌 Time.fixedDeltaTime이 사용되거나 구성이 과도 할 경우 속성을 변경하는 것이 좋습니다. 일반적으로 이것은 관절이나 접촉으로 인한 지터를 줄이기 위해 사용됩니다.

이들 중 하나 또는 그 조합을 살펴볼 수 있습니다.

관련 문제