티스토리 뷰
[ 이슈 ]
카메라를 이동시키면 특정 각도에서 벽이 사라지는 것 같아보임
[ 원인 ]
저는 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인 오브젝트들은 다 충돌을 하겠다! 하는 설정입니다.
그럼 물체는 안뚫리나.. 가끔 플레이어가 뚫릴 때가 발생합니다
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 일때보다 카메라 움직임이 뭔가 부자연스러운 것 같아서 고민이네요 ㅠㅠ,,
그리고 제페토에서도 플레이어 통과하는 케이스가 있더라구요,,
'🎨 > Unity' 카테고리의 다른 글
[Unity] StarterAsset에 커스텀 애니메이션 추가하기 (0) | 2022.03.03 |
---|---|
[Unity] Animation Clip, Animator, Animator Controller, Avatar (0) | 2022.03.02 |
[Unity] Coroutines 코루틴 (0) | 2022.02.20 |
[Unity] UnityWebRequest / JsonUtility (0) | 2022.02.18 |
[Unity] NPC와 대화하기 (2) (0) | 2022.02.18 |
- Total
- Today
- Yesterday
- Flutter getter setter
- 플러터 얼럿
- ribs
- DRF APIException
- Dart Factory
- flutter deep link
- Django Heroku Scheduler
- flutter dynamic link
- 장고 URL querystring
- 구글 Geocoding API
- SerializerMethodField
- METAL
- Sketch 누끼
- Flutter Clipboard
- Flutter 로딩
- PencilKit
- drf custom error
- 장고 Custom Management Command
- flutter 앱 출시
- Django FCM
- Python Type Hint
- Django Firebase Cloud Messaging
- flutter build mode
- 플러터 싱글톤
- ipad multitasking
- cocoapod
- Watch App for iOS App vs Watch App
- Flutter Text Gradient
- github actions
- Flutter Spacer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |