티스토리 뷰

728x90
반응형

[ 이슈 ]

카메라를 이동시키면 특정 각도에서 벽이 사라지는 것 같아보임

 

 

 

[ 원인 ]

저는 StarterAsset 의 PlayerFollowCamera 를 사용 중인데요, 

이 카메라는 Cinemachine 패키지의 CinemachineVirtualCamera 입니다. 

 

카메라의 body를 보면

Obstacles > Camera Collision Filter가 Nothing 으로 설정되어있습니다.

그래서 카메라가 물체에 충돌을 못한채 물체 안으로 들어가버려서 위와 같은 현상이 발생하는 것입니다. 

 

 

참고로 각 필드에 대한 추가 설명은 두가지 링크를 보시면 좋습니다. 
Cinemachine Collider 
3rd Person Follow Virtual Camera Explained in Unity’s Cinemachine

 

 

[ 해결 1 - 카메라가 물체를 통과하지 못하도록 ]

 

Starter Asset 의 PlayGround 설정과 동일하게  Body > Obstacles 부분을 설정해봅시다. 

Player를 제외하고 Default Layer인 오브젝트들은 다 충돌을 하겠다! 하는 설정입니다. 

 

Starter Asset > PlayGround > PlayerFollowCamera

 

그럼 물체는 안뚫리나.. 가끔 플레이어가 뚫릴 때가 발생합니다

 

 

 

 

StarterAsset > PlayGround로 돌려봐도 동일하네요  ㅠㅠ

 

 

 

[ 해결 2  - 카메라가 플레이어를 통과하지 못하도록 ]

Player 안에는 PlayerCameraRoot 가 있습니다. 

 

 

이게 플레이어의 머릿속(?)에 위치하고 있는데요

 

 

 

Transform > Position > Y 를 1.7로 바꿔서 CameraRoot 위치를 플레이어 위로 올려줍니다.

 

 

 

그럼 이제 카메라가 플레이어 안으로 들어오는 일이 없어집니다! 

 

 

 

[ 개선 ] 

LegoGame 튜토리얼을 보니까 Environment Layer를 만들어서 Collision Filter로 설정해줬던데, 

Default 나 Everything을  Collision Filter로 두는 것보다 더 깔끔, 명확, 유지보수성 좋은 것 같아서

저도 따라 해줬어요! 

 

 

# Create Empty Parent 

월드를 구성하는 물체라고 할 수 있는 게임오브젝트들을 모두 선택하고 

Create Empty Parent 를 눌러줍니다.

 

 

Parent Game Object 의 이름을 Environment 라고 해줍니다.

 

 

# Environment Layer 만들기 

Environment  오브젝트를 선택하고 인스펙터에 가서 

Layer > Add Layer 를 눌러줍니다. 

 

 

Environment 라는 User Layer를 추가해주시고 

 

 

Environment 오브젝트의 Layer를 방금 만든 Layer로 설정해줍니다. 

 

 

그럼 모든 child objects 도 layer를 Environment 로 바꾸겠냐고 물어보는 얼럿이 나오는데,

Yes 를 눌러주세요!

 

 

 

 

# PlayerFollowCamera > Collision Filter 설정

PlayerFollowCamera 의 

Obstacles > Camera Collision Filter를 Environment 레이어로 선택해주세요!

 

 

 

 

# Third Person Controller > Ground Layers 설정

Third Person Controller 는 Grounded 라는 필드를 가지고 있는데,

Default 만 체크되어있습니다.

 

 

GroundLayers는 캐릭터가 ground로 사용하는 레이어입니다.

그래서 Defult 뿐만아니라 아까 만든 Environment 도 같이 체크해줘야지

플레이어가 Environment Layer인 물체 위에 서있을 수 있게 됩니다.

 

 

 

 

 

[ 고민 ]

위처럼 바꾸니까 Noting 일때보다 카메라 움직임이 뭔가 부자연스러운 것 같아서 고민이네요 ㅠㅠ,, 

그리고 제페토에서도  플레이어 통과하는 케이스가 있더라구요,, 

 

 

 

 

반응형
댓글