유니티 48

2D RPG - (6) Tilemap을 통한 배경 그리기 + Cinemachine

1) Tilemap2D 플랫포머 게임에서 배경을 만들기 위해서우선 Hiearchy 창에서 우클릭 후에 2D - Tilemap - Renctangular를 생성하겠습니다.총 2개를 생성하고 각각 Ground와 Background라고 이름붙이겠습니다. Ground는 플레이어와 상호작용할 지형지물의 역할을 수행하게 됩니다.그리고 Background는 플레이어와 관계없는 배경의 역할을 수행할 예정입니다. 따라서 설정은 각기 다른데, 각각 다음과 같습니다. Ground의 설정은 다음과 같습니다. 물리 설정을 수행해야 하므로 Rigidbody2D 컴포넌트를 추가하고 설정을 Static으로 하여 고정시키겠습니다.그 이후 Tilemap에 적용할Tilemap Collider2D와 물리 시스템과 상호작용할 Composit..

유니티 입력 처리 심화 - (2) 임베디드 방식

지난 포스트에서는 입력장치에서 직접 값을 읽어오는 다이렉트 방식의 Input System을 알아보았습니다.이번 포스트에서는 Input Action을 통해 입력장치의 값을 읽어오는 임베디드 방식을 알아보겠습니다. 1) 임베디드 방식이란? 위와 같이 입력 장치에서 C# 스크립트로 입력값을 전달하되,Input Action을 통해 입력값을 전달하는 방식입니다.간단한 게임의 구조에서 사용할 수 있으며 Direct 방식에 비해서 입력을 자유롭게 설정할 수 있습니다. InputAction의 경우 입력장치로부터 입력값을 InputAction.CallbackContext를 통해 전달받습니다.그리고 입력장치로부터 입력방식은 다음의 3가지로 전달받게 됩니다.1 - 1) StartedAction이 연결된 키를 처음 누르는 경..

유니티 입력 처리 심화 - (1) Direct 방식

C# 기반의 게임엔진인 Unity에서는기존의 Input Maanger와 새로운 방식의 Input System을 사용하여 입력을 처리합니다.이 둘의 차이점에 대해서는 이전의 포스트에서 다뤄보았습니다. https://monstrosite.tistory.com/42 Input Manager와 Input System유니티에서는 두 개의 입력 시스템을 제공합니다.구형 입력 시스템인 Input Manager와 신형 입력 시스템인 Input System입니다. 사용자의 키 변경에 대응하기 위해 개발된 Input System은 기존의 Input Managemonstrosite.tistory.com 이번 포스트에서는 Input System을 조금 더 쪼개어 깊게 다뤄보고각 방식의 차이점에 대해서도 알아보겠습니다. 1) ..

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..