Zombie 정리 - 진행중

2020. 8. 10. 17:36카테고리 없음

- Global Illumination, NavMesh 등은 Static Object에만 적용된다

 

- 캐릭터 이동 구현은 Input 부와 Act 부로 나누는게 확장성 면에서 좋다. (레트로 유니티 14.4장 참고)

 

- 캐릭터 이동 구현에서 RigidBody의 MovePosition() 메소드를 사용하여 위치 값을 변경하는 것이 좋다.

Transform으로 위치 값을 직접 변경한다면 물리 처리를 무시하고 위치를 덮어쓸 가능성이 있는데, 위 방법을 사용할 경우 이동 경로에 다른 콜라이더가 존재한다면 물리 처리가 정상적으로 실행되기 때문이다.

비슷한 관계로 회전 값에 대해서도 transform.rotation을 이용하는 것보다 RigidBody의 rotation을 이용하는것이 더 적절하다.

 

- Cinemachine (시네머신) : 카메라 움직임을 쉽게 제어하는 유니티 공식 패키지. Brain Cam과 Virtual Cam을 활용해서 다양한 화면 연출을 손쉽게 할 수 있고, FollowCam도 쉽게 구현이 가능하다. (레트로 유니티 14.5장 참고)

 

- FixedUpdate() : Monobehavior를 상속받아 자동으로 생성되는 Update와는 다르게, 물리 정보 갱신 주기에 맞춰 반복실행되는 메서드이다. 기본값은 0.02초이다.
스크립트로써 오브젝트의 움직임을 컨트롤 할 때에 사용하면 오차가 날 확률이 상대적으로 줄어든다고 한다.

 

- Rigid Body 용어정리
 1) Angular Drag (각 항력) : 회전에 대한 마찰력. 높을수록 물체가 잘 회전하지 않거나 회전하더라도 금방 멈추게 된다. 다른 오브젝트에 부딪히고 밀려날 때 캐릭터가 비정상적으로 미끄러지거나 회전한다면 이 수치를 높이면 된다.

- Animator 용어 정리
 1) Apply Root Motion : 해당 컴포넌트가 붙은 게임 오브젝트의 Transform 값을 애니메이션이 제어하도록 허용하는 기능. 캐릭터를 스크립트로 움직임을 제어할 때 아티스트가 의도한 움직임이 같이 섞여버리면 부자연스러운 움직임이 형성되므로, 이럴 땐 이 기능을 Off하는 것이 좋다.

 

 2) Blend Tree (블렌드 트리) : 여러 애니메이션 클립을 파라미터 값에 따라 적절히 혼합하는 모션 기능. 컨트롤러의 입력 강도에 따라 Run, Walk, Idle 등을 나눈다고 했을 때, 입력 강도를 Move 파라미터에 넣은 후, Move 파라미터 값에 따라 적절히 섞여서 움직이는 것 등에 사용된다.

 

- 아이템의 자동 사용에 관해서는 Interface를 사용해서 느슨한 커플링 관계로 구현하는게 좋음(레트로 유니티 15.1 참고)

 

- Line Renderer 용어 정리

 1) Cast Shadows : 라인 렌더러가 그리는 궤적이 그림자를 만들어 낼 지 여부를 결정함

 2) Receive Shadows : 라인 렌더러가 그리는 궤적 위에 다른 게임오브젝트의 그림자가 비출 것인지의 여부를 결정

 3) Width : 라인 렌더러가 그리는 궤적의 두께

Line Renderer Component의 Width 항목 

 

- AudioSource 컴포넌트 재생 메서드 특징

 1) Play() : 이미 재생중인 오디오가 있다면 정지하고 처음부터 오디오를 다시 재생한다.

(ex. LOL에서 캐릭터 감정표현) 

 2) PlayOneShot() : 이미 재생중인 오디오가 있다 하더라도 정지하지 않고, 재생할 오디오와 이미 재생 중인 오디오를 중첩하여 재생한다.

(ex. FPS게임에서 연사중인 총의 화기음)

 

- out 키워드

 1) out 키워드는 메서드가 return 이외의 방법으로 추가 정보를 반환할 수 있게 만든다. out 키워드로 입력된 변수는 메서드 내부에서 변경된 사항이 반영된 채 돌아오는 ref 키워드의 특성을 가지고 있기 때문이다.

 2) ref 키워드와는 다르게 out 키워드가 갖는 특성은 다음과 같다.

  a. 현재 메서드가 끝나기 전에 out 키워드가 붙은 변수는 값을 반드시 할당 받아야 한다. (강제성)

  b. out 키워드가 쓰인 변수는 함수 내에서 값을 읽을 수 없다.

 3) out키워드를 쓰는 이유

  ref 키워드의 경우 매개 변수를 넘기는 경우에 메서드가 해당 매개 변수에 결과를 저장하지 않더라도 컴파일러는 아무런 경고를 하지 않는것에 반해, out 키워드의 경우 매개변수를 넘길 때 메서드가 해당 매개변수에 결과를 저장하지 않으면 컴파일러 에러를 띄우기 때문에, 런타임 단의 에러를 컴파일 단의 에러로 옮겨올 수 있다는 개념에서 사용할 수 있다. 

 4) 사용 예시 : Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance);