분류 전체보기(294)
-
[C#, 유니티] Unity3D_RPG 몬스터 (FSM, ViewDector)
몬스터 RPG게임에서 빠져서는 안될 요소로 수많은 RPG게임에 유저들이 매료되고 게임의 스토리 확장과 몰입감에 있어서 필수적인 몬스터를 오늘 구현해보겠습니다 오늘 사용할 에셋은 Wolf(늑대)라는 몬스터를 적용하겠습니다 " 플레이어나 몬스터처럼 복잡한 것들은 가능한 상태패턴을 적용하기로 한다 이는 객체지향적으로 서로 모듈화하여 서로 다른 것들에 영향을 주지않도록 개방폐쇄원칙을 지켜야한다 " 몬스터는 5가지패턴의 상태패턴을 가짐 : { 가만히 있는, 추적, 공격, 맞기, 죽음 } 몬스터는 플레이어의 상태패턴 방식처럼 클래스형태(파일)로 빼놓는게 아닌 코루틴 상태패턴을 사용하겠습니다 코루틴(Coroutine) Co + Routine 의 뜻을 보면 '같이 + 루틴'이라는 의미로서 프레임 단위마다 진행되는 업데..
2022.08.31 -
[C#, 유니티] Unity3D_RPG Scriptable 응용 2 (Item 및 Inventory 생성)
인벤토리(Inventory) 오늘은 스크립터블 오브젝트를 통해 아이템의 기능을 구현하고 실제로 게임에서 아이템을 추가하고 삭제할 수 있도록 인벤토리를 만들어보겠습니다 스크립트 1. Item.cs 아이템은 사용하는 행동이 중요하기보다 아이템(객체)이라는게 더 중요하다는 점에서 인터페이스보다 추상클래스가 적절하다 이후에 있을 데이터들이 인게임에 들어가거나 플레이어에게 장착하거나 인벤토리로 들어가는 각각의 상황들에 맞게 가능하려면 아이템을 데이터로 만들어야 한다(스크립터블 오브젝트) 추상클래스는 인터페이스와 마찬가지로 사용되는 추상함수가 상속받는 클래스에서 반드시 재정의 되어야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 using System.Col..
2022.08.30 -
[C#, 유니티] Unity3D_RPG Scriptable 응용 1 (선택지, 퀘스트 생성)
Scriptable 저번 시간 스크립터블를 배웠다 오늘은 이것을 가지고 대화를 통해 선택지를 만들고 퀘스트를 주는 RPG를 만들어보겠습니다 유니티의 특징을 이용하여 해당 NPC마다 대화에 대해서 관리를 해주기 위해 애초부터 컴포넌트를 갖고 있도록 하는 방식이 편할것이다 그러나 하나의 NPC만 하더라도 대화가 한 두개가 아닐것이다 그래서 컴포넌트처럼 스크립트에 대화를 할당하고싶지만 게임오브젝트에 스크립트를 붙이고 싶지않다 관리가 어려울 뿐더러 매번 사용할때마다 붙이는것이 보기 좋지않다 그렇다면 어떤 방식이 좋을까? 컴포넌트를 타일형태의 데이터를 저장하는 방법, 바로 'Scriptable'을 이용하자는 것이다 기존 클래스들은 MonoBehaviour 클래스를 상속받고 있었다 컴포넌트를 타일형태로 저장하는 클..
2022.08.29 -
[C#, 유니티] Unity3D_RPG ScriptableObject (Conversation)
대화 다이얼로그 스크립터블 오브젝트를 사용하여 npc와 상호작용할 때 대화를 할 수 있는 컴포넌트를 만들었습니다 스크립트 1. ConversationController.cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 using System.Collections; using System.Collect..
2022.08.26 -
[C#, 유니티] Unity3D_RPG 상호작용
플레이어와 상호작용하는 오브젝트 RPG게임의 경우 플레이어가 특정 키를 눌렀을 때 앞에 있는 NPC와 대화를 하거나 아이템을 먹을 수 있는 등 다양한 상호작용할 수 있게 만들 수 있다 스크립트 1. IInteractable.cs 상호작용이 가능한 행동 하나로 관리(인터페이스 이용) 여러가지 함수 내에서 재정의하여 쓸 수 있음 1 2 3 4 5 6 7 8 9 10 11 using System.Collections; using System.Collections.Generic; using UnityEngine; public interface IInteractable { void OnFocused(); void OnUnFocused(); void Interaction(); } Colored by Color Sc..
2022.08.25 -
[C#, 유니티] Unity3D_RPG 상태패턴머신 (디자인패턴)
상태패턴(state pattern) 상태패턴의 사전적 의미 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다 상태패턴의 장점 장점1. 다른 상태에 대한 내용들을 전혀 고려하지 않아도 프로그램 작성에 영향받지 않음 장점2. 확장성이 용이 (새 기능이 추가되어도) 장점3. 내 상태에 대해서만 파악하면 되기 때문에 공략이 유리 장점4. 불필요한 조건문을 줄일 수 있음 상태패턴의 단점 단점1. 상태를 단 하나만 지정해줄 수 있기때문에 중복처리를 해야하는 상태는 적용하기 어려움 (ex. 점프중에 맞는다) 단점2. 상태가 많아지면 조건문 처리가 복잡해짐 상태패턴은 언제 적용하는게 좋은가? 상태패턴을 적용함으로 앞으로 조건들에 ..
2022.08.24