플레이어가 유니티 실행시 아래와 같이 지면과 떨어지는 현상이 있었다.
이로 인해 연쇄작용으로 지면과 닿지 않아 점프가 되지 않았다.
원인 파악을 위해 Event, Invoke 둘다 Debug.Log를 찍었는데 정상적으로 호출되고 잘 작동되었는데
여전히 지면과 공중에서 뜨는 현상이 발견됐다.
private void OnCollisionEnter2D(Collision2D other)
{
Debug.Log(other.gameObject.name + " collision");
if (other.collider.CompareTag("Ground"))
{
isGrounded = true;
}
}
위와 같이 Ground 태그를 가진 게임오브젝트와 충돌이 발생하는 함수에도 Debug.Log를 작성해서 확인해 보았다.
정상적으로 Console에도 로그가 찍혀서 원인 파악을 위해 튜터님께 질문했다.
Default Contact Offset 설정값 문제였는데
충돌이 발생하기전 충돌체와 얼마나 가까워 질수 있는지를 결정하는 물리엔진과 관련된 설정이라고 하셨다.
찾아보니까 픽셀, 도트 같은 작은 그래픽을 사용할 때 주로 사용한다고 한다.
Edit - Project Setting - Physics 2D - Default Contact Offset를 0.001로 수정(기본값 0.01)
정상적으로 지면과 맞닿는 모습이다.
테스트를 위해 숫자를 반대로 Default Contact Offset를 0.1로 키워서 설정해보니 지면과 뜨는 현상을 보였다.
지면과 맞닿아서 점프도 테스트 해보니 정상적으로 작동했다.
정리
지면과 떨어지는 현상은 Default Contact Offset 설정값 문제로
충돌이 발생하기전 충돌체와 얼마나 가까워 질수 있는지를 결정하는
물리엔진과 관련된 설정이다.
보통은 기본값으로 두면 되지만 픽셀, 도트 같은 작은 그래픽을 사용할 때는
지면과 충돌점을 생성하기 위해 Default Contact Offset 설정값을 낮춰서 사용한다.
'개발일지' 카테고리의 다른 글
[Unity] 점프 애니메이션과 트랩 충돌 시 문제 해결 과정 (0) | 2024.11.20 |
---|---|
241119(화) [더블점프 구현] (0) | 2024.11.19 |
241101(금) [더블점프, 애니메이션 오류 수정] (0) | 2024.11.01 |
241029(화) [뭔가 이상하지만 점프대 입니다.] (0) | 2024.10.29 |
241018(금) [팀과제 input 리펙토링] (0) | 2024.10.18 |