공부/Unity

MeshCollider, 라이트 맵, Directional Light, 최적화, fbx 모델, 표준 애니메이션, 블랜드 트리, Animation Layer, 시네머신, LineRenderer, Particle System

월러비 2025. 8. 26. 17:28

MeshCollider

  • 정해진 모양이 아닌 메쉬에 맞춰서 그려지는 콜라이더다.
  • 정교하진 않고 메쉬의 형태만 맞춘다.
  • 사용 안하는것을 추천한다.
    • 이유 : 성능 하락이 심하기 때문이다.

라이트 맵

  • 유니티는 라이팅 데이터 에셋을 사용하여 라이팅 효과의 실시간 연산량을 줄이며, 씬에 변화가 감지될 때마다 매번 새로운 라이팅 데이터 에셋을 생성한다.
    • 안움직이는 빛을 기준으로 계산하여 렌더링하는 것이다.
  • 안움직이는 오브젝트 구별 방법 : 오브젝트 클릭 - 우측 상단 static 체크 확인
    • static : 움직이지 않는 오브젝트에 체크하면 움직이지 않게되는 옵션이다.
  • 빌드하기 전 에디터 단계에서 만들어지는 에셋이다.
  • 조금 더 선명하게 그려지는 효과가 있다.
  • 생성 방법
    1. window - Rendering - Lighting
    2. new를 누르면 현재 씬의 라이트 정보가 자동으로 담겨진 에셋이 생성된다.
    3. 하단의 Generate 버튼 클릭
  • 이 라이트 맵 에셋에 라이트, 스카이박스같은 환경 정보 등 씬의 환경 정보들이 저장된다.

Directional Light

  • 보통 빛은 각도와 감도에 따라 ‘감쇠’가 일어나지만, Directional Light는 모든면에 동일한 빛이 쬐여지기 때문에 감쇠가 일어나지 않는다.

최적화

  • SuperSampling, DLSS 같이 최적화에 도움을 주는 툴이 있다.
    • SuperSampling은 비싸고, DLSS는 저렴하다.

FBX 모델

  • 3D 캐릭터 모델 파일이다.
  • 애니메이션이 들어있는 fbx 모델도 있고, 기본 born만 있는 fbx 모델도 있다.
  • Animation Type : 애니메이션의 뼈대를 움직이는 타입 설정이다.
    • Generic : 현재 fbx 모델만 움직일 수 있는 고유 애니메이션만 움직이는 타입이다.
    • Humanoid : 인간형태의 모델 애니메이션을 움직일 수 있는 타입니다.
  • 리깅이 잘못되어있다면 모델에 구멍이 나있거나 하는 경우도 있으니 확인을 잘 해야한다.
  • 아바타 확인 방법
    1. 모델 클릭 - Avatar 아이콘 에셋 클릭

표준 애니메이션

  • 어떤 모델로 쓰든 같은 애니메이션이 작동할 수 있도록 표준 fbx 모델을 사용한 애니메이션이다.
  • born : 캐릭터를 움직이는 뼈대다.
    • 애니메이션 키 프레임으로 born을 잡아서움직이는 것이다.
      • 특정 본만 움직일 수 있다.

Animator 설정

  • Animate Physics : 애니메이션에 물리적 설정을 줄 수 있게하는 옵션이다.
  • 애니메이션 Parameter에 Id를 주고 스크립트에서 파라미터값을 지정할 수도 있다.

블랜드 트리

  • 하나의 상태로 여러 애니메이션을 전환하며 사용하는 상태다.
    • 애니메이션의 전환 : 선형 보간
  • 생성 방법
    1. Animator - 우클릭 - New Blend Tree
  • 파라미터를 통해서 애니메이션 전환이 가능해진다.

Animation Layer

  • 애니메이션의 부위를 동시에 써야하는 경우 사용하는 기능이다.
  • 본을 Mask를 통해 구분해서 여러 애니메이션을 동시에 동작하게 된다.
  • Weight : 현재 레이어에서 재생되는 애니메이션을 Mask로 설정된 born에 얼마나 적용할지 설정하는 옵션이다.
    • 1이라면 현재 레이어의 애니메이션을 Mask의 born에 100% 적용한다는 의미이다.

빈 애니메이션

  • 현재 레이어에 빈 애니메이션 상태로 들어가게 된다면, base 레이어의 같은 조건의 상태로 가게된다.

rigidbody 설정

  • Mass : 오브젝트의 상대적인 질량을 의미한다.
  • Damping : 저항을 의미한다.
    • 물리적인 저항을 받을 때 추가 또는 감소하는 추가 값이다.
    • Linear Damping : 선형 저항
      • ex) 중력가속도를 받아 포물선을 그리는것
    • Angular Damping : 회전 저항

플레이어 이동

  • 이동 방법 - Transform position 값 변경 / RigidBody Velocity 값 변경
  • 차이점 : 충돌검사 - 물리 업데이트 주기에 맞춰서 충돌 검사 한다.
    • Rigidbody가 물리 업데이트때 값이 변경된다.
    • Transform으로 이동을 하게되면 충돌과 상관없는 이동이 보이게 된다.
      • Update에서 충돌 검사를 하게되면 충돌이 뚫렸다가 다시 충돌보정됬다가 왔다갔다를 반복하게 된다.
  • Update : 일반 렌더링 업데이트 / FixedUpdate : 물리 업데이트 렌더링
    • Update : 충돌과 관련 없이 일어나게 된다.
      • 오류가 발생할 수 있다.
  • Time.deltaTime를 FixedUpdate에서 쓰게되면 Update와 별개로 FixedUpdate의 프레임 시간이 반환된다.
moveDir.x = rb.position.x + (input.Rot * moveSpeed * Time.deltaTime);
moveDir.z = rb.position.z + (input.Move * moveSpeed * Time.deltaTime);
rb.MovePosition(moveDir);

시네머신

  • 여러 카메라를 사용할 수 있게 하고, 여러 움직임을 줄 수 있는 컴포넌트다.
  • GameObject - Cinemachine에서 생성할 수 있다.

Virtual Camera

  • 메인 카메라를 담당하는 가상의 카메라 오브젝트다.
  • Follow : 할당한 게임 오브젝트를 카메라가 따라가게되는 옵션이다.
  • LookAt : 할당한 게임 오브젝트의 forward와 같은 방향을 보게되는 옵션이다.
  • Body :
  • Aim : 타겟 오브젝트 오프셋 설정 옵션이다.
    • Dead Zone
    • Soft Zone

Line Renderer

  • 라인을 그리는 컴포넌트
    • 총알같은 발사체의 궤적을 그리는데 사용된다.
  • Size : 발사체의 기준점을 찍을 수 있다.
    • 여러개 생성할 수 있다.
    • 지그재그처럼 point 생성도 가능하다.
     

Particle System

  • 이펙트를 렌더링하는 컴포넌트다.
  • 이펙트는 코드에서 Play를 해야한다.

IEnumerator

  • 반복자 함수다.
    • yeild return을 반드시 반환해줘야한다.
    • 반환하기위해 코드 순회를 일시정지하고 반환이 끝나면 일시정지한 곳에서 다시 시작한다.
  • 비동기 흐름을 만들어낼 수 있다.
    • 동기 : 다른곳에서 10동안 일을 한다면 10동안 기다려야한다.
    • 비동기 : 다른곳에서 일을 하든 말든 작업하다가 다른곳이 준 값을 가지고 다시 돌린다.

코루틴

  • 조건이 맞을때까지 반복자 안의 작업을 일시정지하고, 조건이 끝나면 일시정지한곳에서 다시 시작하는 기능이다.
private IEnumerator CoShotEffect(Vector3 hitPosition)//hitPosition : 끝점
{

    audioSource.PlayOneShot(gunData.shootClip);

    muzzleEffect.Play();
    shellEffect.Play();

    lineRenderer.enabled = true;
    lineRenderer.SetPosition(0, firePosition.position);
    lineRenderer.SetPosition(1, hitPosition);

    yield return new WaitForSeconds(0.2f);

    //Debug.Log("End");
    lineRenderer.enabled = false;
}