목록전체 글 (279)
ecsimsw
Animation - 유니티에서 애니메이션 시스템을 다루는 방법을 공부하였다. 유니티는 Mecanim이라는 시스템을 제공하여 애니메이션 설정이나, 애니메이션 클립을 이용, 리타게팅 등 애니메이션을 더 쉽게 다둘 수 있도록 하였다. Animator controller - Animator controller는 게임 오브젝트의 애니메이션 상태와 상태 전환을 관리한다. Assets에 우클릭 후 create - Animator Controller 을 통해 생성하고, Animator 컴포넌트의 Controller에대한 인자로 대입하는 것으로 해당 오브젝트의 애니메이션을 관리한다. State Machine - 애니메이션의 상태와 상태 간의 전환을 다루기 위해 State Machine을 사용한다. 이는 일종의 플로우차..
Material / Texture Material - Material은 오브젝트의 디스플레이 방법을 정의하는데 사용된다. 3차원에서 빛이 오브젝트에 닿아 재질, 색 등에 의해 출력되는 것을 Rendering 이라고 하는데, 이 렌더링에 있어 오브젝트의 속성을 정의해두는 것이 Material 이다. 이런 오브젝트의 렌더링을 담당하는 컴포넌트가 Mesh Renderer이고, Materials 속성에서 렌더링에 사용할 Materials 목록을 정의 할 수 있다. 메시 렌더러는 메시 필터에서 지오메트리를 가져와 오브젝트의 Transform 컴포넌트에 정의된 위치에 지오메트리를 렌더링한다. 오브젝트의 Inspector에서 Mesh Renderer _ Element 옆 작은 원을 클릭하여 material을 impo..
Prefab - prefab은 객체지향에서의 class와 비슷한 친구이다. 오브젝트의 컴포넌트 / 프로퍼티를 에셋으로 저장하고, 이런 설계도를 필요에 따라 간단히 인스턴스 하는 기능이다. Using prefab - 오브젝트를 Hierarchy에서 project 뷰로 드래그 하는 것으로 프리펩 에셋으로 만들 수 있다. 또 반대로 프리펩 에셋을 Scene이나 Hierarchy로 드래그 하는 것으로 프리펩 에셋을 인스턴스 할 수 있다. 프리팹 에셋을 편집하면 모든 packing된 오브젝트는 해당 편집이 적용된다. 이렇게 프리팹 에셋으로 packing되어 있는 오브젝트는 청색으로 이름을 갖고, 오브젝트를 우클릭 후 Unpacking prefab 하는 것으로 프리팹 에셋과의 연결을 끊을 수 있다. 이름이 청색인 ..
Rigidbody / AddForce / AddTorque Rigidbody - Rigidbody(강체)는 gameObject가 유니티 물리 엔진에 제어 받게 한다. 한마디로 힘과 질량을 갖고 움직일 수 있도록 하는 것이다. Mass : 오브젝트의 질량 Drag : 오브젝트가 받는 공기 저항 값 Angular Drag : 오브젝트가 토크로 회전 시 받는 공기 저항 값 Use Gravity : 중력의 영향 유무 Is Kinematic : 활성화 시 물리엔진의 제어없이 Transform으로만 조작됨 Interpolate : 오브젝트의 움직임 부드러움 옵션 처리 Collision Dectection : 오브젝트 충돌 감지 / 감지 옵션 처리 Constraints : 오브젝트의 움직임 고정 위는 대표적인 rig..
Accessing - 다른 오브젝트, 컴포넌트를 엑세스 하는 방법을 공부하였다. GameObject.GetComponent - 해당 게임 오브젝트의 컴포넌트 타입을 인자로 받아 반환하고, 없다면 null을 리턴한다. Rigidbody rb = this.gameObject.GetComponent(); GameObject.Find - 게임 오브젝트의 이름을 파라미터로 받아 찾고, 그 오브젝트를 리턴한다. 없다면 null을 리턴한다. 이름에 "/"을 이용해서 주소처럼 오브젝트 안의 자식 오브젝트를 명시할 수 있다.(Parent_objcet /Child_ object) docs에선 성능에 저하를 야기하므로 매 프레임 마다 호출되는 경우를 최대한 피하고, startup에 사용하여 변수로 저장하는 것을 추천한다. ..
Rotate Euler angle - 유니티에서 회전은 크게 Euler angle / Quaternion 으로 표현된다. 오일러(Euler) 방식은 X,Y,Z 축을 기준으로 회전 값 만큼 회전 시키는 우리에게 익숙한 방식이다. 하지만 이는 "짐벌락" (세 회전을 차례로 적용 시 이전 두 회전의 결과로 세 번째 축이 이전 축 중 하나와 같은 방향을 가리킬 수 있다는 문제)을 야기하므로, 유니티 내부에서는 쿼터니언(Quaternion) 방식을 취한다. 위처럼 inspector에서 직접 rotation 값을 변경하는 방식은 오일러 방식이지만 실제로 유니티 내부에서는 쿼터니언 방식으로 저장된다. Quaternion - 유니티 내부에서 오브젝트 회전을 표기하는 방식으로 x,y,z,w 네 개의 값으로 표현되지만, ..
Translate Vector3 - Vector3는 3차원 공간에서의 위치와 벡터를 표현하기 위해 사용되는 "구조체"이다. (좌표를 구조체로 표현하는 이유는 C#-class/struct 포스팅에서 정리하였다.) Vector3 v = new Vector3(1, 1, 1); 위와 같이 생성자를 통해 생성하여 사용하거나 Vector3.forward(= Vector3.(0,0,1))처럼 static 변수를 통해 간단히 사용할 수 있다. 쓰임이 많고 중요하다고 생각하기 때문에 Vector3만을 따로 공부 후 포스팅 할 생각이다. transform.position - 오브젝트의 transform의 position 값을 변경하여 물체의 위치를 바꿀 수 있다. transform.position = new Vector3..
Data Transmission / Reception Encapsulation - 데이터가 송신될 때, 수신 시 동일한 계층에서 필요할 정보를 기존 데이터에 덧붙여 다음 계층으로 넘기는 과정을 Encapsulation, 반대로 데이터가 수신될 때, 송신 시에 동일한 계층에서 덧붙여준 필요 정보를 데이터에서 꺼내 해석하는 것을 de-Encapsulation 이라고 한다. 송신 시 추가된 정보는 수신 시 그 역순으로 해석된다. 송신 시 A 계층에서 추가된 정보는 수신 시 A 계층에서만 사용될 수 있고 다른 계층은 볼 수 없다. Header / Trailer - 송수신을 위한 데이터는 각 계층에서 필요한 정보를 앞, 뒤에 붙여 전송되고, 해석된다. 이때 앞에 붙는 데이터를 헤더, 뒤에 붙는 데이터를 트레일러라..