앤글 블로그

이것저것 끄적이는 곳

(유니티) 카메라 Projection(투영방식)

유니티 카메라의 Projection(투영방식)은 두 가지 방식이 있습니다. Perspective 와 Orthographic 입니다. Perspective 방식 Perspective 는 카메라 위치에서 부터 투영선이 벌어집니다. 가까이 있는 것은 크게 보이고 멀리 있는 것은 작게 보입니다. 투영선을 조절할려면 Field of View 를 조절하면 됩니다. Perspective 는 사물에 대한 원근감과 공간감을 잘 표현해서 보여줍니다. Orthographic 방식 Orthograpic 은 투영선이 평행을 이루고 있습니다. […]

(유니티) 코루틴 Coroutine

코루틴 Coroutine 코루틴은 유니티가 지원하는 기능입니다. 함수의 작업 과정 사이에 대기시간을 삽입할 수 있습니다. 코루틴 사용 법 위 스크립트를 게임 오브젝트에 컴포넌트하고 실행시키면 Hello Unity를 순차적으로 읽어냅니다. 이제 코루틴을 사용해서 Hello 를 읽어내고 3초후에 Unity 를 읽어내게 해보겠습니다. 코루틴을 사용할 함수는 IEnumerator 라는 타입을 사용합니다. HelloUnity 함수를 보면 yield return new WaitForSeconds 라는 코드가 있는데 […]

(유니티) 회전(rotation)과 쿼터니언

게임 오브젝트를 코드에서 회전시키기 위해 new Vector3();를 사용하면 에러가 난다. Vector3 형식을 Quaternion 형식으로 변환할 수 없다.라는 문구가 뜨는데 위치와 달리 회전은 쿼터니언(Quaternion)을 사용한다. Quaternion.Euler함수를 사용하면 Vector3를 쿼터니언으로 쉽게 변환할 수 있다. 쿼터니언은 x,y,z,w 4개의 축을 사용하여 Vector3를 사용했을 때 생기는 짐벌락 현상을 방지한다. 짐벌락 현상이란 오브젝트가 회전을 하면 회전하는 오브젝트 기준으로는 공간 좌표도 회전하게 […]

(유니티) 로컬 스페이스, 글로벌 스페이스

각각 로컬 스페이스, 글로벌 스페이스 설정일 때 로케이션 방향을 본 것입니다. 글로벌은 게임 세상을 기준으로 하는 절대적인 좌표축. 로컬은 나 자신의 부모 또는 나 자신의 회전을 기준으로 하는 좌표축입니다. 두 가지의 차이점은 글로벌은 절대적인 좌표이고 로컬은 상대적인 좌표입니다. 보통 평행이동은 기본적으로 로컬 스페이스를 기준으로 이동합니다. 게임 세상을 기준으로 하는 것이 아니라 자기 자신을 기준으로 한다는 […]

(유니티) 충돌감지함수 – OnTrigger, OnCollision

사진이 작아서 잘 안보이지만 유니티 게임 오브젝트는 (3D의 경우) ‘Collider’ 컴포넌트를 가진다. 2D의 경우 Add Conponent 를 통해서 추가하면 된다. (Add Component -> Physics -> 원하는 Collider) ‘Collider’ 컴포넌트를 가지고 있으면 충돌처리를 할 수 있다. ‘Collider’ 컴포넌트의 ‘Is Trigger’ 가 체크(true)되있으면 다른 게임오브젝트들이 통과할 수 있다. 이제부터 설명할 함수들은 조건이 성사되면 유니티에서 실행시켜주는 함수들이다. void OnTriggerEnter(Collider […]

(유니티) 게임 매니저가 쓰이는 이유

  유니티에서 ‘게임 매니저’ 스크립트를 만들면 이미지가 자동으로 톱니바퀴로 바뀐다. 이건 게임 설정을 의미하는 것과 비슷한 아이콘이다. 그 만큼 많은 사람들이 사용하기 때문에 유니티에서 자동으로 지원하는 것이다. 왜 사용할까?   파란색 박스를 노란색 목표지점까지 옮기는 ‘소코반’ 게임을 만들고 있다고 치자.   해당 게임에서 승리조건은 파란색 박스를 모두 노란색 목표지점까지 옮기는 것이다. 그렇다면 효율적으로 승리조건을 알아내는 방법은? […]

(유니티) 스크립트에서 Transform 컴포넌트 불러오기

보통 스크립트로 컴포넌트의 기능을 사용할 때 위 사진들처럼 사용하는 경우가 많다. 하지만 ‘Transform’ 컴포넌트는 모든 게임 오브젝트가 소유하는 컴포넌트이기 때문에 유니티에서 특혜를 받는다. 게임 오브젝트 자신이 가지고 있는 ‘Transform’ 컴포넌트를 사용할 경우 소문자로 transform 을 사용하면 바로 사용 가능하다. transform.원하는 함수;