[TIL] 내일배움캠프_ Unity SkyBox, Cursor, NewInputSystem, Invoke, AnimationCurve
개인과제중 인벤토리를 만들어야하는 기능이 있는데 그게 3D 강의에 포함되어 있어서 오늘은 3D 강의를 듣게 되었다
- Skybox
게임 중에 스카이박스를 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킨다
- Rigidbody - ForceMode
게임 오브젝트에 물리적인 힘을 가할 때 사용
- Force : 힘을 지속적으로 적용
- Acceleration : 가속도를 적용, 이전 힘의 누적에 따라서 점진적으로 더 빠르게 움직임
- Impulse : 순간적인 힘을 적용하여 짧은 시간에 갑작스러운 움직임 발생
- VelocityChange : 변화하는 속도를 적용, 물체의 현재 속도를 변경하면서 움직임
- Cursor
Cursor.lockState = CursorLockMode.Locked; // 마우스 커서를 기본 위치에서 움직이지 않도록 잠궈놓음
Cursor.lockState = CursorLockMode.None; // 마우스 커서 잠금 해제
- New Input System
1. Send Messages
- 특정 키가 들어오면, 특정한 함수를 자동으로 호출하는 방식
- 함수명 “On + Actions name”
2. Invoke Unity Events
- 해당 Actions에 대한 키 입력이 들어왔을 경우, 설정한 이벤트 함수를 호출
- 인스펙터 창에 호출할 함수를 설정해주면 된다
- 함수의 접근지정자를 public 으로 해줘야 이벤트함수 등록을 할 수 있다
- 런타임 오류를 방지할 수 있다
- 선택 고려사항
- 작은 프로젝트에서는 SendMessages를 사용하여 간단한 통신을 처리할 수 있으나 대규모 프로젝트에서는 UnityEvents를 사용하여 더 구조적인 접근 방식을 사용하는 것이 좋다
- UnityEvents를 사용하면 런타임 오류가 발생할 가능성이 낮아진다
- InputActionPhase
- Started : 실행 시작 시 호출
- Performed : 실행 확정 (완전히 실행) 시 호출
- Cacnceled : 실행 종료 시 호출 (버튼을 뗐을 때 실행)
- Disabled : 액션이 활성화되지 않음
- Waiting : 액션이 활성화되어 있고 입력을 기다리는 상태
- Started와 performed가 같은 타이밍에 실행된다. (실행 순서는 Started가 먼저)
- Invoke(string methodName, float time)
지정된 시간(time) 후에 지정된 메서드를 실행
- InvokeRepeating(string methodName, float time, float repeatRate)
지정된 시간 후에 지정된 메서드를 주기적으로 반복해서 실행
- TryGetComponent<T> (out T component)
특정 컴포넌트가 게임 오브젝트에 연결되어 있는지 확인하고, 연결되어 있다면 해당 컴포넌트를 가져온다
- AnimationCurve
애니메이션의 키프레임을 사용하여 값을 보간 하는데 사용되어 시간에 따라 값을 부드럽게 변화시키는 커브를 정의한다
주로 애니메이션 시간에 따른 값을 정의하는데 사용되며, 특히 더 복잡한 애니메이션을 제어하기 위해 사용되는 경우가 많다 예를 들어, 오브젝트의 움직임, 크기조정, 회전 등에 대한 애니메이션을 정의할 수 있다