목록 Framework (44)
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..
Socket - Tcp 포로토콜 기반의 소켓 프로그래밍을 지원하는 Net 모듈에 대해서 공부하고 스트림을 통해 c# 응용프로그램과 통신할 것이다. net / socket - net 모듈은 소켓 객체를 이용하여 서버와 클라이언트의 소켓 객체를 생성 가능하다. net.connect()와 net.createConnection() 호출을 통해 클라이언트를 서버에 연결을 할 수 있고, 이렇게 클라이언트와 서버가 연결되는 시점에 서버에 socket 객체가 생성된다. 만들어진 소켓은 stream 이면서 동시에 event emitter 인데, 이는 데이터를 스트림을 통해 데이터를 읽고 쓰기가 가능하며 이벤트 핸들러를 사용하여 데이터를 처리할 수도 있다. - net 모듈은 설치가 필요없이 위처럼 바로 require하여 ..
Socket - node.js에서 socket을 이용하여 통신하는 방법을 공부하고, 학습 예제로 웹 채팅 서버/어플리케이션을 제작하고, 나아가 이 서버로 c#/ android 클라이언트가 통신하는 방법을 공부할 생각이다. socket.io - node.js에선 socket.io 모듈을 통해 소켓 통신을 할 수 있다. npm install socket.io --save server에서 Express를 사용하여 Http 서버를 생성하고 생성된 Http 서버를 socket.io server에 연결한다. var app = require('express')(); var server = require('http').createServer(app); var io = require('socket.io')(server)..