2017-12-06 15 views
0

"groundBlack"& "groundWhite"라는 태그가있는 두 가지 유형의 근거가 있습니다. 점프하기 위해서, 나는 콜리더가 "땅"으로 시작하는 태그를 남겼는지 확인합니다.OnCollisionExit2D - Unity 내의 다른 충돌 요청하기

void OnCollisionExit2D(Collision2D col){ 

    if (col.gameObject.tag.Substring (0, 5) == "ground") { 
     playerController.grounded = false; 
    } 

    } 

문제는 또 다른 한개에서 내 선수 이동 때마다, 그것은 거짓에 접지 세트와 내가 원하지 않을 것입니다. OnCollisionExit2D 내부에서 다른 개체와 충돌이 발생했는지 알 수있는 방법이 있습니까? 아니면이를 수행 할 다른 방법이 있습니까? 미리 감사드립니다!

답변

3

col.GetContacts은 모든 현재 연락처를 제공합니다. 잘하면 OnCollisionExit에 여전히 채워 져야합니다. 그렇지 않으면 충돌 목록을 유지할 수 있습니다. 항목에 추가, 종료시 제거. 그런 다음 목록이 비어있을 때만 거짓으로 설정합니다.

또한 .Substring (0, 5) == "ground" 대신 .StartsWith("ground")을 사용해야합니다. 비교를 위해 새 문자열을 할당 할 필요가 없습니다.

+0

두 번째 옵션이 마음에 듭니다. 매우 유용합니다. 많은 감사합니다! –