Transform Component는 모든 GameObject에 존재하는 기본 컴포넌트로 Object의 위치(Position), 회전(Rotation), 크기(Scale)를 결정하는 컴포넌트이다.
Vector는 2차원이나 3차원 혹은 그 이상의 차원에서 위치, 방향, 속도와 같은 값을 나타내기 위해 사용된다.
Rotate는 Object의 회전을 나타내는 요소로 Transform Component를 다룰 때 잠깐 설명했었다.
게임에서 충돌은 정말 중요하고 많이 사용된다. 캐릭터가 활을 쏘거나 총을 쏠 때 화살, 총알의 충돌이나 캐릭터간의 충돌로 인해 이동에 방해를 받는 상황과 같이 실제 충돌은 많이 쓰이게 된다.
Raycasting 실제 동작하는 Scene은 공간(3D)환경인데 사용자가 모니터로 보는 환경은 스크린(2D)환경이다. 화면상에 있는 어떤 Object를 누를 때, 입력값은 스크린좌표(2D 좌표)인데 실제 선택되는 것은 공간좌표(3D 좌표)를 가지는 Object이다.
Camera 게임에서 카메라의 구도나 시점에 따라 화면이 달라진다. 3인칭으로 캐릭터의 뒷모습을 따라가거나 1인칭으로 캐릭터의 시점으로 보는 등 여러가지 카메라 조작이 필요하다.
UI UI도 Unity에서는 하나의 GameObject이다. UI Component를 생성하면 Canvas, Button, Text순으로 하나의 GameObject가 생성된다.
여러개의 UI를 다룰 때 어떤 UI를 제일 먼저 표시할지 관리를 해주어야 한다. 사용자가 누른 UI를 제일 위로 올리는것과 특정 키를 누르면 닫히는 것과 같은 관리를 해주어야 한다.
특정 화면을 하나의 Scene으로 나타낼 수 있는데 Scene은 로그인화면과 같이 UI로만 구성될 수도 있고 실제 Game환경의 화면을 나타낼 수 있다.
Unity에서 소리가 발생하는 환경을 Scene에서 구현하고자 할 때 상황을 다음과 같이 정리할 수 있다.
Obejct Pooling은 여러 개의 Object를 미리 생성해 놓고 필요할 때마다 생성한 객체를 Pool에서 꺼내 사용하는 방법이다.
특정 일을 여러 프레임으로 나누어서 진행하고 싶을 때, 이전의 상태를 기억하거나 현재 상태를 일시정지 시키고 이후에 다시 진행하는 방법이 필요하다. 이때 사용하는 것이 Coroutine이다.
게임에서 hp나 패턴과 같은 게임에 대한 정보를 데이터로 관리하게 되는데 이를 다루기 위한 방법이 필요하다.
마우스커서 화면에 있는 마우스커서가 무엇을 가리키는지에 따라 마우스커서의 아이콘을 변경하고 싶을 때가 있다. 이것을 구현하기 위해서는 다음과 같은 단계를 거쳐야 한다.
특정 캐릭터가 공격(Attack)이나 스킬(Skill)사용하고자 할 때 여러가지의 입력을 받을 수 있다. 공격하는 커맨드를 입력하고 대상을 마우스로 지정한다거나, 커맨드입력 없이 마우스 클릭만으로 공격을 명령할 수 있다.
게임을 만드는데 캐릭터 머리 위에 이름이나 HP, MP를 나타내야 할 때가 있다. 위의 HP Bar를 구현하기 위해서 추가하고자 하는 GameObject에 HP Bar에 대한 Script Component를 추가해야 한다.
게임의 이동방식중에 격자이동을 하는 게임이 있는데 예를들면 포켓몬스터-골드나 쯔끄루 게임과 같은 2D게임이 있다. 격자이동의 예시는 아래그림과 같다.
위 두가지를 동시에 만족하기 위해 코루틴을 사용할 수 있다. yield return을 이용해 공격모션동안 다른 작업을 할 수 있도록 할 수
몬스터를 구현할 때 어떻게 행동할지도 정해주어야 한다. 몬스터의 행동은 크게 세가지로 나눌 수 있다.
유니티에서 아이템을 구현하기 위해서 먼저 아이템의 구조를 설계할 필요가 있다. 장비아이템, 소비아이템, 치장아이템과 같은 아이템들은 하나의 Item 클래스로 공통된 기능을 묶을 수 있다. Item 클래스로 공통기능을 묶는 구조는 아래 그림과 같이 나타낼 수 있다.
[C# 서버] Account Server에서 로그인을 위한 API를 만들었는데 클라이언트에서 이를 사용하려면 어떻게 해야할까? 먼저 웹서버에 요청을 전담할 클래스를 하나 만드는 방법이 있다.
로그인 화면을 구현하기 위해서 직접 UI를 그리는 것도 좋지만 이미 구현되어 있는 디자인을 유니티 에셋 스토어를 사용하는 것도 하나의 방법이다. 이번 포스팅에서 사용할 에셋은 스토어에 있는 Login Module을 사용할 예정이다.