본문 바로가기

취미로 하는 게임코딩_gameCodingAsHobby/유니티 구현 정리_Implement Summary

유니티 각개격파_020_SetActive와 Destroy 메서드 GameObject(게임오브젝트) 유니티에서 게임오브젝트는 Scene(씬) 화면에 만들 수 있는 가장 기본이 되고, 바탕이 되는 Object(객체, 개체)이며 독립체이다. Hierarchy(하이어라키; 계층구조)창에서 +버튼을 클릭하면 게임오브젝트를 만들 수 있다. 또는 빈 곳에서 마우스 오른쪽 버튼을 클릭해도 된다. GameObject라는 기본(Default , 디폴트) 이름을 가진다. 마우스로 한번 클릭해서 이름을 바꿀 수 있다. Inspector(인스펙터, 조사관, 검사관) 창에는 디폴트로 Transform 이라는 Component(컴퍼넌트, 구성요소, 부품) 하나만 가지고 있다. Position(위치)의 각 축 값은 임의로 정해진다. 오른쪽 삼점 아이콘을 클릭한 후 Reset(리셋) 하면 위치를 .. 더보기
유니티 각개격파_019_스크린 좌표를 월드 좌표로 변환하기 이전 글에서 스크린 좌표계에서 사용하는 위치와 월드 좌표에서 사용하는 위치는 다르다고 했다. 그래서 월드 좌표에 있는 게임오브젝트와 스크린 좌표계를 사용하는 마우스 포인트의 위치는 서로 상호작용할 수 없다. 여기서는 마우스 포인트 위치를 월드 좌표로 변환하는 코드를 알아본다. 먼저 2D 환경 부터 테스트 해보자. 유니티 허브를 실행한 후 3D 모드의 프로젝트를 하나 만든다. 처음에는 2D 환경으로 테스트 하기 때문에 글을 참고해서 2D환경으로 수정한다. 귀찮으면 그냥 2D 타입으로 프로젝트를 만들고, 3D 타입으로 테스트 할 때는 다시 하나 더 만들어도 상관없다. 여기서는 3D환경을 2D 환경으로 수정하여 테스트 한다. Layout을 2by3으로 바꾼다. Hierarchy창에 Sphere를 하나 만든다... 더보기
유니티 각개격파_018_3D 환경에서 2D로 변경하기 프로젝트를 만들 때 2D 또는 3D를 선택할 수 있다. 여기서는 3D와 2D 환경의 차이를 알아보기 위해 3D 프로젝트를 2D 프로젝트로 변경해 본다. 3D 프로젝트를 하나 만든다. 기본 화면은 위와 같다. 3D 환경은 특징은 다음과 같다. 1. Light(빛) 오브젝트가 기본으로 설정된다. 2. Gizmos(기즈모)라는 좌표 도구가 있다. 3. Scene(씬) 화면이 원근감 있게 보인다. 위 화면은 2D 프로젝트의 첫화면이다. Light오브젝트가 없고 Gizmos 도구가 없다. Scene화면은 원근감 없이 일정하게 보인다. 이제 3D 화면을 2D 화면으로 바꿔보자. 씬 화면에 2D 보기와 3D보기로 바꿔주는 버튼이 있다. 클릭하면 오른쪽에 있던 Gizmos(기즈모) 가 사라지고 격자 모양도 원근감이 없.. 더보기
유니티 각개격파_017_Texture Compression_텍스처 압축 게임에 사용할 sprite(스프라이트; 이미지)를 사용하려고 할 때 이미지를 선택하면 Inspector창에 아래와 같은 메시지가 뜨는 경우가 있다. 1. Only POT texture can be compressed if mip-maps are enabled 밉맵이 활성화 된 경우 POT 텍스처만 압축 할 수 있습니다. 2. Only textures with width/height being multiple of 4 can be compressed to ETC1 format 너비 / 높이가 4의 배수인 텍스처 만 ETC1 (또는 ETC2) 형식으로 압축 할 수 있습니다. 3. Only POT textures can be compressed to ETC1 format POT 텍스처만 ETC1 형식으로 압축.. 더보기
유니티 각개격파_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와 같다. 수평(좌우)으로 움직일 때 음(마이너스)의 값 또는 양(플러스)의 값을 받고 싶으면 해당 키를 누르.. 더보기