유니티/게임 프로젝트 27

2D RPG - (3) StateMachine의 구성과 완성 (2)

1) 자식 오브젝트에서 사용하는 PlayAnimationTrigger기존에 PlayerController에서 소개해드린 AnimationTrigger 함수의 경우Animator가 있어야 설정이 가능합니다.그러나 Animator의 경우 위와 같이 PlayerController가 부착된 오브젝트의 자식에 존재합니다.따라서 Animator에서 사용하는 컴포넌트를 하나 만들어 다음과 같이 사용할 수 있도록 하겠습니다. using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerAnimationTrigger : MonoBehaviour{ private PlayerController _controll..

2D RPG - (2) StateMachine의 구성과 완성 (1)

이제 기존에 설계한 StateMachine을 완성해보도록 하겠습니다.완성된 StateMachine은 다음과 같이 동작하게 됩니다.   이제 StateMachine을 사용하는 궁극적인 이유를 알아보겠습니다.일단 StateMachine을 기반으로 완성된 Animator를 살펴보겠습니다.  위는 Base Layer의 Animator 화면이고,아래는 PrimaryAttack Layer의 Animator입니다.위의 사진에서 볼 수있듯이 Animation끼리의 복잡한 전환없이 애니메이션이 서로 연결되는 것을 볼 수 있습니다.이어지는 사진은 플레이어게게 설정된 컴포넌트의 화면입니다. 보시는 것처럼 PlayerController를 제외하고 직접 만들어낸 컴포넌트가 존재하지 않는 것이 보입니다.즉, StateMachin..

2D RPG - (1) StateMachine의 설계

Unity를 이용한 2D RPG를 만드는 이번 프로젝트의 첫 시작은 StateMachine을 설계하는 것으로 시작하겠습니다.원래 StateMachine은 인공지능의 하나로, State별로 AI가 취해야 하는 행동을 정의합니다. 하지만 이번에 만드는 StateMachine은 플레이어의 애니메이션을 상태기반으로 변경하는 데 사용합니다.구성은 크게 다음의 3가지로 구성합니다.플레이어를 조작하면서 StateMachine을 통해 State를 변화시키는 PlayerControllerState를 변화시키는 주체인 StateMachine플레이어의 상태 별로 나눠진 State 1) 플레이어의 State를 변화시키는 주체인 PlayerStateMachineusing System.Collections;using System..

간단한 2D RPG 프로젝트 - (3) MonsterController

이번에는 몬스터를 위한 MonsterController를 만들어보겠습니다.플레이어의 경우 플레이어가 직접 조작하므로 챙겨야 할 것이 많지만몬스터의 경우 코드를 통해 이를 자동화하여 제어하는 것이 가능합니다.이때 MonsterController 역시 BaseController에서 상속되었으므로 일부 기능은 동일하게 수행합니다. 간단한 프로젝트이므로 몬스터에서 Animation 처리는 생략하고 대신각각의 애니메이션에 대한 처리를 로그로서 남기도록 하겠습니다. 1) MonsterControllerusing System.Collections;using System.Collections.Generic;using UnityEngine;public class MonsterController : BaseControll..

간단한 2D RPG 프로젝트 - (2) PlayerController

이번에는 BaseController에서 파생된 PlayerController를 만들어보겠습니다.코드 자체는 매우 간단하고 개선할 부분이 매우 많으므로프로젝트에 완전히 적용하기에는 무리가 있다는 점을 알아주셨으면 좋겠습니다. 1) Animator플레이어는 많은 애니메이션을 사용합니다.이번 프로젝트에서는 총 6개의 애니메이션을 사용합니다.우선 Animator의 구성을 먼저 확인해보겠습니다.  움직이지 않는 상태의 KnightIdle, 기본 이동 상태의 KnightMove, 대시 이동 상태의 KnightDash점프하고 떨어지는 상태의 JumpFall, 그리고 콤보 공격에 따라 수행되는 KnightAttack1,2,3이 있습니다. 위의 애니메이션들의 전환은 다음과 같이 정리할 수 있습니다.KnightAttack..

간단한 2D RPG 프로젝트 - (1) BaseController

이번 포스트에서는 유니티 엔진을 사용하여 간단한 2D RPG의 구성요소를 만들어보겠습니다.2D는 기본적으로 3D에 비해 구성이나 설계가 단순하기에 부담없이 사용할 수 있는 코드로 구성해보았습니다. 1) BaseControllerRPG게임에는 플레이어가 조종하는 캐릭터와 그렇지 않은 캐릭터가 존재합니다.그러나 2개의 요소 모두 공통적인 기능을 수행해야 하는 경우가 있습니다.이런 상황에서 상속을 통해 공통적인 기능은 부모가, 개별적인 기능을 따로 구현하는 것이 좋습니다.따라서 부모의 역할을 수행하는 BaseController를 만들어보겠습니다. using System.Collections;using System.Collections.Generic;using UnityEngine;public class Bas..