Unity 7
[Unity] 콜라이더(Collider)
콜라이더(Collider) 콜라이더는 충돌 감지를 위한 컴포넌트 입니다. 콜라이더는 3D 오브젝트를 위한 Box Collider, Capsule Collider, Shpere Collider 등이 있고, 2D 오브젝트를 위한 Box Collider 2D, Polygon Collider 2D, Circle Collider 2D 등이 있습니다. 여기서는 3D 오브젝트를 위한 콜라이더에 대해서만 설명하겠습니다. 콜라이더(Collider) 종류 박스 콜라이더(Box Collider) 박스 콜라이더는 사각형 모양의 콜라이더 이며, 유니티에서 가장 많이 사용하는 콜라이더 입니다. Edit Collider를 클릭하면 콜라이더의 모양을 마우스로 편집할 수 있습니다. 다음 표는 박스 콜라이더의 속성을 정리한 것입니다. ..
[Unity] 레이캐스트(Raycast)
레이캐스트는 광선을 쏘는 것을 의미합니다. 여기서는 레이를 쏜다 라고 표현하겠습니다. 레이캐스트를 사용하면 광선에 충돌되는 콜라이더(Collider)에 대한 거리, 위치 등의 자세한 정보를 RaycastHit로 반환합니다. 레이캐스트는 충돌되는 콜라이더를 반환하므로 콜라이더가 없는 게임오브젝트는 충돌을 감지할 수 없습니다. 레이캐스트는 주로 전방에 있는 오브젝트를 검출할 때 사용합니다. 다양한 레이캐스트 함수가 있지만 몇가지만 살펴보겠습니다. Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo) 시작점(origin)과 방향(direction)으로 레이를 쏘는 함수입니다. 시작점과 방향으로 모든 충돌체에 대해 레이를 쏩니다. ..
[Unity] 트랜스폼(Transform) 크기(Scale)
Transform.lossyScale Transform.lossyScale은 게임오브젝트의 절대적인 크기를 나타냅니다. Transform.lossyScale은 읽기전용(readonly)이기 때문에 게임오브젝트의 절대적인 크기를 설정할 수 없습니다. Transform.lossyScale은 게임오브젝트의 부모 자식 관계에서 자식이 회전했을 경우 크기가 왜곡되기 때문에 유니티에서는 절대적인 크기를 설정할 수 없게 한 것 같습니다. 다음은 Transform.lossyScale의 예제 코드입니다. Debug.Log(transform.lossyScale); Transform.lossyScale으로는 절대적인 크기를 설정할 수 없지만 절대적인 크기를 설정하는 다른 방법이 있습니다. 부모를 null로 설정하고 loca..
[Unity] 트랜스폼(Transform) 회전(Rotation)
짐벌락(Gimbal Lock) 먼저 짐벌락을 설명하기 전에 오일러각(Euler angle)에 대해서 이해해야 합니다. 오일러각은 3차원 공간에서 강체가 놓인 방향을 표시하기 위해 도입한 오일러가 도입한 세 개의 각도입니다. x축을 롤(roll), y축을 피치(pitch), z축을 요(yaw)라고도 부릅니다. 오일러각을 이용해서 물체를 회전하다보면 두 축이 한 축으로 되는 현상이 발생합니다. 이를 짐벌락이라고 합니다. 짐벌락은 두 축이 한축으로 되기 때문에 한 축이 제 역할을 못하게 되는 현상입니다. 한 축으로 회전함에도 불구하고 다른 축들이 영향을 받는 이유는 축들이 서로 연결되어있기 때문입니다. 이해를 돕기 위해 예를 들어 보겠습니다. 아래 하이어라키 구조를 보면 x축(빨간색)은 y축(초록색)에 연결되..
[Unity] 트랜스폼(Transform) 이동(Move)
유니티 좌표계 프로그램마다 사용하는 좌표계가 다릅니다. 따라서 좌표계에 대해서 이해하는 것은 매우 중요합니다. 유니티에서는 위치를 표현할 때 왼손 좌표계를 이용합니다. X축은 빨간색, Y축은 초록색, Z축은 파란색(RGB순서)으로 표현합니다. Transform.position Transform.position은 게임오브젝트의 절대좌표를 나타냅니다. Transform.position에 Vector3를 대입하면 해당 위치로 이동합니다. 다음은 Transform.position의 예제 코드입니다. transform.position = new Vector3(x, y, z); Transform.localPosition Transform.localPosition은 게임오브젝트의 상대좌표를 나타냅니다. 게임오브젝트의..
[Unity] 싱글톤 패턴(Singleton Pattern)
싱글톤 패턴(Singleton Pattern) 싱글톤 패턴은 이름에서도 알 수 있듯이 단 하나의 인스턴스만 존재하는것을 의미합니다. 싱글톤 패턴은 디자인 패턴(Design Pattern)에서 자주 사용되는 패턴중에 하나입니다. 유니티에서 외부 스크립트에 접근할 경우 GameObject.FindObjectOfType(), GetComponent(), 혹은 public 변수를 선언해서 인스펙터에서 드래그 앤 드롭으로 참조 등을 해야하지만 싱글톤 패턴을 사용하면 스크립트를 전역적으로 접근할 수 있습니다. 유니티에서는 게임매니저, 씬매니저와 같이 단일로 관리해야 할 경우에 주로 싱글톤 패턴을 사용합니다. 사용법은 다음과 같습니다. public class ObjectManager : MonoBehaviour { ..
[Unity] 기본 폰트 로드 방법
기본 폰트를 로드하기 위해서는 다음과 같이 코드를 작성하고 text에 대입하면 됩니다. Font font = Resources.GetBuiltinResource("Arial.ttf"); text.font = font;