RPG(9)
-
[C#, 유니티] Unity3D_RPG 타임라인 & 게임연출 (Cinematic Studio)
타임라인 타임라인이란 게임씬의 간단한 연결성과 시각적 효과를 위한 게임적 시퀀스를 만드는 툴이다 시간의 흐름에 따라 게임씬의 오브젝트들을 재구성하는 것 마치 동영상을 편집하는 툴이 유니티에서도 구현된다고 생각하면 되겠다 타임라인을 쓰려면 우선 패키지매니저에서 시네마틱 스튜디오라는 것을 다운로드해야한다 다운로드한 타임라인을 이제 다뤄보도록 하자!! 우선 빈 오브젝트를 만들고 로 지정하여 타임라인을 관리하도록 하자 타임라인 초기 설정 다양한 트랙을 써서 시각적인 연출이 가능하다 타임라인의 Track의 종류는 다양한데 오늘 다뤄볼 track을 소개하자면 activation, animation, audio, control, signal, playable 그리고 cinemachine track등이 있다 이름 설명..
2022.09.02 -
[C#, 유니티] Unity3D_RPG 몬스터 (타입 & 제네릭 상태패턴)
나는 커피를 좋아한다 그래서 공부를 하러 가든 친구와 약속을 잡든 우리 주변의 널리고 널린 카페를 탐방하는것을 좋아한다 오늘은 아카데미 근처에 카페에 잠시 들렸다 그곳에서 신기한 놈을 마주했다 이제 사람이 아닌 로봇이 커피를 만들어 내준다 그것도 눈 앞에서 생생하게.. 맛은 그저 그런 커피였지만 신기한 경험이었다 아무튼.. 서두가 길었다; 오늘은 어제에 이어서 몬스터에 대한 응용을 공부해보았다 제네릭(Generic) 다음과 같이 쓰게 될 때 C++에서는 가능했지만 C#에서는 적용이 되지않음을 알 수 있다 이것은 완벽주의적 객체지향을 하는 C#이기때문에 오류가 발생하는데 이를 해결 할 수 있다 탬플릿과 제네릭의 차이점 제네릭(Generic)의 기본 방향은 제네릭이 있으면 "모든 자료형에 모두 대응할 수 있..
2022.09.01 -
[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