강의 프로젝트 트러블 슈팅
- raycast가 적중하지 않는 문제 --> layer mask 설정 , is trigger 해제, rigidbody 제거 등 여러 방식을 시도했고 결과는 is trigger를 false로 두어야 한다는 것
이에 전제 조건이 붙는데 rigidbody가 붙어있을 땐 is trigger가 false여야지만 raycast가 정상작동한다
rigidbody가 없다면 is trigger는 상관이 없고, rigid body와 collider가 같이 붙어 있어야만 위 문제가 발생한다는 것을 확인
- 음악 재생을 위한 오브젝트를 두고 trigger를 이용해 볼륨을 조절하려 했으나 변경되지 않는 문제 --> 오브젝트의 레이어만 설정하고 태그는 기본 태그를 사용 중이어서 CompareTag가 false를 반환하는 현상 --> 메인 캐릭터 오브젝트에 tag를 Player로 변경한 후 정상 작동을 확인
오늘 한 일
개인 과제를 진행하면서 기존의 Player Input System을 Unity Invoke에서 C# 으로 변경하려 한다.
내가 가려는 방향이 이쪽으로 가니 미리 익숙해지려는 것도 있고, 코드로 해결할 수 있는 부분이 관리도 편리할 것이라 생각되서이다.
일단 기존의 강의 코드를 그대로 가져와서 c# 기반으로 바꾸기 위해 onenable, ondisable에서 이벤트를 구독/해제하는 코드를 추가했다.
private void OnEnable()
{
playerInputAsset["Move"].performed += OnMoveInput;
playerInputAsset["Move"].canceled += OnMoveInput;
playerInputAsset["Jump"].performed += OnJumpInput;
playerInputAsset["Look"].started += OnLookInput;
}
private void OnDisable()
{
playerInputAsset["Move"].performed -= OnMoveInput;
playerInputAsset["Move"].canceled -= OnMoveInput;
playerInputAsset["Jump"].performed -= OnJumpInput;
playerInputAsset["Look"].started -= OnLookInput;
}
여기서 문제된 점이 Look 부분의 카메라 회전 부분
마우스가 가만히 있음에도 기존에 시작한 벡터값을 유지하는지, 계속해서 화면이 한 쪽으로 이동하는 현상이 발생
--> cancled를 추가해주니 해결되었다! 기존에 유니티 이벤트 방식에서는 마우스가 가만히 있는 것도 이벤트로 발생해서 가만히 있는 것으로 생각된다. 확신은 없으니 튜터님께 물어보는 것으로..
최종적으로 이벤트 코드는 아래와 같이 변경했다.
private void OnEnable()
{
playerInputAsset["Move"].performed += OnMoveInput;
playerInputAsset["Move"].canceled += OnMoveInput;
playerInputAsset["Jump"].started += OnJumpInput;
playerInputAsset["Look"].started += OnLookInput;
playerInputAsset["Look"].canceled += lamda =>{mouseDelta = Vector2.zero;};
}
private void OnDisable()
{
playerInputAsset["Move"].performed -= OnMoveInput;
playerInputAsset["Move"].canceled -= OnMoveInput;
playerInputAsset["Jump"].started-= OnJumpInput;
playerInputAsset["Look"].started -= OnLookInput;
playerInputAsset["Look"].canceled -= lamda =>{mouseDelta = Vector2.zero;};
}
람다식을 한 번 써보고 싶어서 써봤는데 이 친구는 언제 봐도 익숙하지가 않다. 혹시나 클로저 캡쳐로 힙에 Vector2.zero가 올라갈까 걱정했는데 gpt왈 값만 복사되므로 힙에는 살아있지 않다고 하며, 지역 변수가 아니니 클로저 객체로 포장되지는 않는다고 한다. 이를 확인할 수 있는 방법 또한 알려줬는데.. 하라는 대로 해도 찾을 수가 없어서 다음 기회에 테스트 해보는 것으로 하고 람다를 뺐다. 결국!
내일은 필수 기능을 빠르게 완료하고 도전 기능이나 추가 기능 작업을 들어가고자 한다.
아 그리고 모니터 패널에 선이 생겼다. 패널이 망가졌다는 뜻.. 조만간 새 모니터로 교체해야겠다
'[내일배움캠프 Unity 9기]' 카테고리의 다른 글
| 05/22 TIL 및 개인 과제 마무리 (0) | 2025.05.22 |
|---|---|
| 05/21 TIL (0) | 2025.05.21 |
| 05/19 TIL 스카이 박스의 애니메이션 설정, 조명 처리 (1) | 2025.05.19 |
| 05/16 TIL - 유니티 프로젝트 숙련 강의 수강 (1) | 2025.05.16 |
| 05/15 TIL 프로젝트 마무리 및 Unity 실전 팁 (0) | 2025.05.15 |