TIL

[TIL] 내일배움캠프_ Unity SkyBox, Cursor, NewInputSystem, Invoke, AnimationCurve

Hwone 2023. 9. 19. 19:36

개인과제중 인벤토리를 만들어야하는 기능이 있는데 그게 3D 강의에 포함되어 있어서 오늘은 3D 강의를 듣게 되었다 

 

- Skybox 

게임 중에 스카이박스를 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킨다 

 

- Rigidbody - ForceMode

게임 오브젝트에 물리적인 힘을 가할 때 사용

  1. Force : 힘을 지속적으로 적용
  2. Acceleration : 가속도를 적용, 이전 힘의 누적에 따라서 점진적으로 더 빠르게 움직임
  3. Impulse : 순간적인 힘을 적용하여 짧은 시간에 갑작스러운 움직임 발생
  4. 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

애니메이션의 키프레임을 사용하여 값을 보간 하는데 사용되어 시간에 따라 값을 부드럽게 변화시키는 커브를 정의한다

주로 애니메이션 시간에 따른 값을 정의하는데 사용되며, 특히 더 복잡한 애니메이션을 제어하기 위해 사용되는 경우가 많다 예를 들어, 오브젝트의 움직임, 크기조정, 회전 등에 대한 애니메이션을 정의할 수 있다