Unity3D RigidBody Component


최종 수정일 : 2018-08-13

[Rigidbody Component]


  • GameObject가 물리 제어로 동작하게 하는 컴포넌트
  • 물리 시뮬레이션을 통해서 오브젝트의 위치를 조절.
  • 중력, 충돌에 대한 오브젝트의 반응의 크기를 계산.

    Property


    1. Mass : 질량. 상대적인 의미의 질량으로, 일반적인 kg, g 등의 무게 단위는 아니다. ‘A 물체 mass가 1, B 물체 mass가 10이라고 할 때 B물체는 A물체보다 10배 더 무겁다.’ 라고 해석하는 것. 보통은 1Mass = 1Kg이라고 가정 후 작업하는 것이 일반적.
    2. Drag : 이동할 때 적용되는 마찰계수(저항)
    3. Angular Drag : 회전할 때 적용되는 마찰계수(저항)
    4. Use Gravity : 중력 적용 여부
    5. Is Kinematic : 체크하면(True) 물리엔진의 영향을 받지 않으며, Transform 컴포넌트를 이용해 이동한다.
    6. Interpolate : 물리력을 이용한 움직임이 끊어지는 현상이 발생할 때 보간해준다.
    7. Interpolate : 이전 프레임의 Transform에 맞게 처리
    8. Extrapolate : 다음 프레임의 Transform의 변화를 추정해 움직임을 처리
    9. Collision Detection : 세밀한 충돌을 검출하기 위한 옵션값
    10. Discrete -> Continuous -> Continuous Dynamic 순서로 정밀 검출
    11. Freeze Position : X,Y,Z 축 중에서 해당 축으로의 이동을 막는다.
    12. Freeze Rotation : X,Y,Z 축 중에서 해당 축을 기준으로 한 회전을 막는다.
      이해를 돕기 위해 Rigidbody Component 이미지를 첨부
      참고 : https://docs.unity3d.com/kr/530/ScriptReference/Rigidbody.html
Read more · 1 min read

Unity3D GameObject

최종 수정일 : 2018-08-13

> [GameObject]



  • 유니티는 컴포넌트 기반 개발(CBD : Component Based Development) 방법론을 지원한다.
  • CBD는 독립적인 기능 단위로 컴포넌트를 제작해 필요한 기능을 조립하는 방식.
  • 컴포넌트란 게임오브젝트의 기능을 담당하는 부분.
  • CBD는 컴포넌트의 재사용이 가능하고, 높은 생산성이 장점이다.
  • GameObject는 특정 속성이나 기능을 갖춘 오브젝트를 담을 수 있는 상자에 비유.
  • 유니티에서는 일반적으로 사용되는 오브젝트를 일부 템플릿 형태로 제공
  • Light, 3D Object, Particle, Camera
  • 캐릭터, 아이템, 상자, 몬스터 등 모든 것이 게임 오브젝트이다.
  • GameObject들은 기본적으로 Transform Component를 포함하고있다.
  • Transform Component를 통해 해당 Object가 월드 상에 어디에 위치하고 있는지, 얼마나 회전하고 있는지, 어느정도 크기인지 결정되기 때문.

    유니티에서 GameObject에게 제공하는 기본함수


    1. Awake
  • 스크립트가 실행될 때 한 번만 호출되는 함수.
  • 상태 값 또는 변수의 초기화에 사용된다.
  • 스크립트 함수 중, 가장 먼저 호출된다.
  • 스크립트가 비활성화 되어있어도 호출된다.
  • Coroutine으로 실행 불가.
    1. Start
  • Update 함수가 호출되기 이전에 한 번만 호출되는 함수.
  • 스크립트가 활성화 되어있어야 실행된다.
  • 다른 스크립트의 모든 Awake가 모두 다 실행된 이후에 실행된다.
  • Coroutine으로 실행 가능
    1. Update
  • 매 프레임마다 호출되는 함수.
  • 주로 게임의 핵심 로직을 작성하는데 사용.
  • 스크립트가 활성화 돼 있어야 실행된다.
    1. LateUpdate
  • 모든 Update 함수가 호출되고 나서 한 번씩 호출된다.
  • Update 함수에서 전처리가 끝난 후 실행해야하는 로직에 사용된다.
  • 카메라 이동 로직에 주로 사용하는 함수.
  • 스크립트가 활성화 돼 있어야 실행된다.
    1. FixedUpdate
  • 물리엔진의 시뮬레이션 계산주기로 기본값은 0.02초다.
  • 발생하는 주기가 일정하다.
    1. OnEnable
  • 게임 오브젝트 또는 스크립트가 활성화 됐을 때 호출된다.
  • 이벤트 연결 시 사용한다.
  • Coroutine 사용 불가.
    1. OnDisable
  • 게임오브젝트 또는 스크립트가 비활성화 됐을 때 호출된다.
  • 이벤트 연결을 종료할 때 사용한다.
  • Coroutine 사용 불가.
    1. OnGUI
  • 레거시 GUI 관련 함수를 사용할 때 사용한다.
    ———————————————————————————-

    Component Cache 처리


    Update는 프레임마다 한 번씩 호출되는 함수로서 항상 최적화에 주의를 기울여야 한다.

  • 이동 로직의 경우 Transform Component의 Position 속성을 조금씩 변경하는 것으로 프레임마다 Transform Component에 접근하는 방식은 바람직하지 않다.
  • 따라서 Update 함수에서 접근해야 할 컴포넌트는 Awake 또는 Start 함수에서 미리 변수에 할당한 후에 Update 함수에서 사용하는 것을 권장한다.

    키워드



    접근 지시자 public


  • 기본적으로 다른 클래스에서 접근할 수 있게 해주는 접근 지시자.
  • 유니티에서는 변수를 public으로 선언할 경우, Inspector View에 해당 변수가 노출되서, 변수의 값을 직접 수정할 수 있다.

    접근 지시자 private


  • 다른 클래스에서 접근할 수 없고, 해당 클래스에서만 사용할 수 있는 접근 지시자.
  • 유니티에서는 Inspector View의 모드를 Debug Mode로 설정하면, private 변수값도 확인할 수 있다.
  • Debug Mode로 설정할 경우, Inspector View는 읽기 전용(Read-Only)가 된다.
  • Inspector View의 Default Mode는 Normal Mode.
  • 또는 [SerializeField] 키워드를 해당 변수 private 앞에 선언할 경우, private 속성은 유지한 채, Inspector View에 해당 변수를 노출시킬 수 있다.

    this


  • this 키워드를 사용한 해당 스크립트(클래스)를 지시.
  • this.gameObject
  • 이 스크립트(클래스)가 추가된 게임오브젝트를 의미한다.
Read more · 3 min read

Unity3D Graphics, Light

최종 수정일 : 2018-08-13

[Graphics]



Texture


3D 모델의 표면에 매핑시킬 이미지 파일을 지칭.

Texture 기능으로 Mesh, Particle 및 Interface에 이미지를 매핑.


- 매핑 - 이미지 또는 동영상을 오브젝트에 겹치거나 둘러싸는 것. - PSD(포토샵), PNG, JPEG, TIFF, GIF, BMP, TGA 등 다양한 이미지 파일 포맷 지원 - PSD 파일에 있는 여러 개의 레이어를 자동으로 평면화(Flatten)한다. - 텍스쳐의 원본을 보존한 상태로 다양한 압축 포맷으로 용량을 줄이는 기능을 제공. - 텍스쳐의 크기가 가로세로 2^n 형태일 때 압축 지원 속도가 가장 빠르다.
- 모바일 플랫폼을 사용할 경우 이 형태를 사용하는게 가장 유리하다.

Texture Type


  • Texture : 모든 텍스처에서 사용되는 가장 일반적인 설정.
  • Normal Map : 색상 채널을 실시간 노멀 매핑에 맞는 형식으로 변경.
  • Editor GUI : 텍스처가 임의의 HUD/GUI 컨트롤에서 사용된다면 사용 권장.
  • Sprite(2D and UI) : 텍스처가 2D게임에서 Sprite로 사용할 경우 권장.
  • Cubemap : 큐브 맵으로 알려져 텍스처의 반사를 만드는데 사용.
  • Cookie : 텍스처에서 라이팅의 쿠키에서 사용하는 기본 파라미터 설정.
  • Advanced : 텍스처에서 특정 파라미터를 이용해 세부적인 제어를 하고 싶을 경우 설정.

    Material


  • 3D 모델에 적용할 텍스쳐의 다양한 속성을 설정하는 역할.
  • “어떤 텍스처를, 어떤 간격으로 반복하고, 표면의 재질은 어떻게 표현하느냐”

    Mesh Filter


  • 애니메이션이 적용되지 않은 3D모델은 Mesh Filter와 Mesh Renderer Component를 가지고 있다.
  • 해당 모델의 3차원 형상 정보인 Mesh 데이터를 가지고 있는 컴포넌트.
  • Asset에서 Mesh 데이터를 가져와서 화면상에서 렌더링하기 위해 Mesh Renderer에 전달.
  • Scene 내의 Mesh를 확인하려면 Mesh Renderer를 게임 오브젝트에 추가하면 된다.
  • 기본적으로 Mesh Filter Component를 게임 오브젝트에 추가할 경우 Mesh Renderer가 같이 추가 되지만, 임의로 삭제했을 경우 수동으로 다시 추가해줘야한다.
  • Mesh Renderer가 없는 경우에도 Mesh는 Scene(및 컴퓨터 메모리)에 존재하고 있지만, 그려지지는 않는다.

    Mesh Renderer


  • Mesh Filter가 가지고 있는 Mesh 데이터를 토대로 화면에 렌더링 처리를 하는 Component
  • 유니티에서 제공하는 ~Renderer 계열의 컴포넌트는 반드시 Material 속성을 가지고 있기 때문에 텍스처 정보를 가지고 있는 머티리얼을 연결하는 속성이 있다는 것을 의미한다.

    Shader


    Material에 적용한 텍스처를 렌더링할 때 표면의 재질감을 표현하는 방식을 결정한다.

Read more · 5 min read