Unity_3D Team Project
3D 퍼즐 레이싱 게임 만들기
Player 의 Jump 오류 수정
Player는 PlayerController.cs 를 통해 Jump를 할 수 있다.
여기서 IsGrounded 라는 Bool 값을 이용해 땅에 닿았을 때에만 점프를 1회 할 수 있도록 취한다.
즉, IsGrounded가 false라면, player는 jump를 할 수 없다.
그런데 레벨 테스트 도중 player가 특정 구간 obstacle에 닿았는데도 점프가 되지 않는 현상이 발생했다.
점프는 이 게임에서 퍼즐을 수행하기 위한 중요한 기능이기 때문에 절대 오류가 나서는 안 된다.
PlayerController.cs 에서 점프와 관련된 수치를 조정해보아도 여전히 특정 obstacle에서 점프가 불가능했다.
그렇다면 특정 obstacle에 문제가 있는걸까?
해당 obstacle의 collider, rigidbody 등을 둘러보아도 크게 문제되는 것은 없었다.
그래서 Unity의 Scene뷰를 통해 Player가 obstacle의 어떤 위치에 닿으면 문제가 생기는지 보기로 했다.
해답은 여기에 있었다.
우리의 눈으로 보기에는 player가 obstacle의 표면에 잘 붙어있다고 생각했지만, 실제로는 그렇지 않았다.
사실 발이 바닥에 붙은 것은 맞지만 '너무 붙은 것'이 문제였다.
왜냐하면 bool IsGrounded를 판별하기 위해 player 발에서부터 ray값을 지면으로 발사하고 있기 때문이다.
ray값이 너무 낮은 위치에서 시작된다면 (지면보다 아래에서) ray가 지면을 인식하지 못한다.
따라서 이렇게 발이 obstacle을 조금 통과하더라도 IsGrounded를 판별하려면
조금 더 높은 위치에서 확실하게 ray를 쏘아주면 된다.
원래 0.01f 였던 ray값을 0.1f 로 조정하니 obstacle의 어떤 위치에서도 오류 없이 jump가 작동했다.
내일 발표도 파이팅!!
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
Player Input System (0) | 2023.12.22 |
---|---|
팀 프로젝트 트러블슈팅 (점프 오류, 장애물 끼임, 리소스 출력) (1) | 2023.12.21 |
안 좋은 코드 시리즈 3탄 (0) | 2023.12.19 |
3D 플랫폼 게임 - 투명 발판 만들기 (0) | 2023.12.18 |
3D - Light / AnimationCurve / 글꼴 생성 (0) | 2023.12.14 |
댓글