본문 바로가기

분류 전체보기

유니티 각개격파_016_카메라(Camera) 게임 오브젝트가 2차원 평면(x , y)에서 움직이든, 3차원 (x, y, z)에서 움직이든 이것을 보여주는 것은 카메라가 담당한다. 즉, 실제 게임에서 일어나는 장면을 보여주는 것이 카메라이다. 유니티에서는 Scene(씬) 탭에서는 게임오브젝트를 편집하고, Game(게임) 탭에서는 카메라에 정해진 위치와 각도에 따라 Scene에서 실제로 눈에 보이는 부분을 보여준다. 카메라로 보는 부분에는 Width(넓이), Height(높이), Depth(깊이)가 있다. Depth는 얼마나 멀리(far) 볼 수 있는가를 나타낸다. 카메라가 보는 전체 공간을 View Volume(뷰 볼륨)이라고 한다. 카메라가 보는 뷰볼륨의 형태는 2가지가 있다. orthographic (직교) perspective (원근) 카메라의.. 더보기
유니티 각개격파_014_벡터(Vector)와 이동(Translate)_마우스 이동 계속해서 이번에는 큐브를 마우스를 클릭해서 움직여보자. 큐브에 Movement (움직임)라는 스크립트를 만들어서 컴퍼넌트로 추가한다. Scripts 폴더에 Movement라는 스크립트를 만든 후 큐브에 컴퍼넌트로 붙이거나 큐브에서 바로 Add Component 버튼으로 새 스크립트를 만들 수 있다. 코드 편집에서 다음과 같이 입력한다. 6번 줄에 변수 movingSpeed (이동 속도)를 만들고 초기값은 0으로 한다. private으로 지정해서 이 클래스 밖에서는 호출할 수 없도록 한다. 초기값을 0으로 해 두면 테스트 할 때 매번 이 숫자를 수정해야 하는 번거러움이 생긴다. 이런 경우 SerializeField(직렬화)를 사용할 수 있다. 위 상태에서 5번 줄 처럼 대괄호와 함께 SerializeFie.. 더보기
유니티 각개격파_015_스크린(Screen) 좌표와 World(월드) 좌표 유니티의 space(공간)은 Screen Space(스크린 공간)과 World Space(월드 공간)이 있다. 각각의 공간에서 사용하는 좌표계가 따로 있다. Screen Point 스크린 좌표계는 화면의 width(넓이)와 height(높이)에 따라 x , y 좌표가 정해진다. 화면의 넓이와 높이를 결정하는 해상도의 픽셀(pixel)에 따라 화면에 나타내는 2D 좌표계이다. 예를 들어 Game탭에서 해상도를 800 x 480으로 정했다면 왼쪽 아래의 x, y 좌표는 (0, 0)이고 오른쪽 위가 (800, 480)이다. 마우스 포인터의 위치나 UI를 넣는 캔버스(Canvas) 등이 이 좌표계를 사용한다. 그러므로 마우스로 클릭하는 위치 또는 손가락으로 터치하는 위치를 가져올 때 사용할 수 있다. World.. 더보기
유니티 각개격파_013_벡터(Vector)와 이동(Translate)_키보드 이동 계속해서 이번에는 큐브를 키보드의 키 값을 입력받아서 움직여본다. 먼저 Edit > Project settings를 클릭한 후 Input Manager (입력 관리자)를 선택해보자. 유니티 엔진에서 기본으로 설정되어 있는 입력시스템(Input System)을 볼 수 있다. 제일 위에 있는 Horizontal (수평)을 클릭하면 Negative Button (음(-)의 값 버튼)은 left(왼쪽) 화살표키 , 양(+)의 값 버튼은 오른쪽 화살표키로 정해져 있다. 또한 대체할 수 있는 (Alternative) 키는 a 와 d 키로 정해져 있다. 즉, 왼쪽 화살표키는 A키와 같고, 오른쪽 화살표키는 D와 같다. 수평(좌우)으로 움직일 때 음(마이너스)의 값 또는 양(플러스)의 값을 받고 싶으면 해당 키를 누르.. 더보기
유니티 각개격파_012_벡터(Vector)와 이동(Translate)_좌표축 이동 이 글에서는 게임오브젝트를 이동시키는 방법을 알아본다. 회전에서 사용했던 프로젝트를 그대로 이용한다. 현재 Y축 값이 1인 큐브를 바닥에 내려오도록 하자. Y값을 조정해도 되지만 여기서는 Rigidbody(리지드바디)라고 하는 물리 컴퍼넌트를 큐브에 장착한다. Inspector창 아래 검색창에서 rig를 입력하면 Rigidbody를 찾을 수 있다. 현재는 3D 프로젝트이므로 2D용인 Rigidbody2D가 아니라 3D용인 Rigidbody를 선택해야 한다. Rigidbody는 유니티에서 물리 시스템에 사용하는 컴퍼넌트이다. 위 그림에서 보듯이 Mass(질량, 무게), Use Gravity(중력 사용) 등 물리적으로 일어나는 현상을 적용할 수 있다. 다음에 따로 다루기로 하고 일단 위와 같이 기본 상태로 .. 더보기
유니티 각개격파_011_벡터(Vector)와 회전(Rotate)_C 이전 글에 이어서 계속해보자. 작업의 편의를 위해 Layout(레이아웃)을 바꿔보자. 오른쪽에 있는 Layout (레이아웃) 버튼을 클릭한 후 2 by 3을 클릭한다. Layout에 대해서는 를 참고한다. 위와 같이 레이아웃을 2by3으로 바꾸면 Scene창과 Game창이 함께 보이고 Hierarchy , Project , Inspector창이 오른쪽으로 모여서 작업하기 편하다. 이제 회전 코드를 작성해보자. 이전에 만든 RotateCube 스크립트 파일을 더블클릭한다. 먼저 큐브를 X축을 기준으로 회전 시키는 코드를 만들어 보자. RotateAxisZ (Z 축 회전)이라는 메서드(함수)에 코드를 작성한다. 회전은 transform.Rotate( ) 를 사용한다. Vector3.forward 는 Vect.. 더보기
유니티 각개격파_010_벡터(Vector)와 회전(Rotate)_B 이전 글 마지막에 Cube를 만들었는데 바닥 아래로 반쯤 내려간 것을 볼 수 있다. 이것은 plane(평면)의 position(위치)가 (0, 0, 0)이고 Cube 역시 같은 위치이기 때문에 큐브의 반은 평면 아래로 내려가 있는 상태이다. 큐브를 위로 올리려면 녹색인 Y축 값을 올리면 되겠다. 왼쪽 이동 도구를 클릭하고 녹색 화살표를 위로 움직이면 position Y값을 조정할 수 있다. 먼저 화살표로 적당한 위치로 이동한 후 정확하게 맞출려면 숫자를 직접 수정하면 된다. 화살표를 건드리기 귀찮으면 Y 글자에 마우스를 갖다 대면 좌우 표시가 뜨는데 이때 마우스를 클릭한 채로 움직이면 숫자를 조정할 수도 있다. 위의 경우는 Cube의 Y축 중심은 중앙이므로 0.5만큼 올려주면 본래 모습을 볼 수 있다. .. 더보기
유니티 각개격파_009_벡터(Vector)와 회전(Rotate)_A 게임에서는 보통 Player(플레이어)라는 게임오브젝트를 조종하여 게임을 풀어나간다. 일반적으로 플레이어는 움직일 수 있어야 한다. 유니티에서는 3D의 움직임을 Coordinates(좌표)에 나타낼 수 있는 Vector(벡터)를 사용한다. Vector(벡터)는 3D모델, 텍스처, 조명 등에도 사용하기 때문에 Vector(벡터)를 이해하는 것이 기본이 된다고 할 수 있다. 유니티에서 게임오브젝트를 만들면 아래 그림처럼 기본적으로 transform (변형) 컴퍼넌트를 가지고 있다. 그 속성을 보면 position(위치), rotation(회전), scale(크기) 가 있는데 여기에 벡터 X , Y , Z 좌표의 값을 사용하고 있다. 소감 한마디 덧붙이면, 요새는 어제 배운걸 오늘 잊어먹는 악순환이 반복되고 .. 더보기