-
Land Of Memories - Stat & DataManager
안녕하세요. 이번 작업은 스탯 관련 작업을 하였습니다. Exp, Level, Hp, Attack, Def 전체적인 흐름도는 다음과 같습니다. 1. 몬스터를 잡으면 Exp가 증가한다.2. Exp가 최대치가 되면 Level이 증가한다.3. Level이 증가하면 Stat Point가 증가한다.4. Stat Point로 Hp, Attack, Def를 조절할 수 있다.5. 값을 저장하면 즉시 반영된다.6. 재접속 시 유지된다. 우선 기존 플레이어가 공격을 당해 실행될 Hi() 함수를 다음과 같이 수정했습니다. 현재 체력과 최대 체력을 playerStat에서 받아와서 계산을 하였는데요. " playerStat" 스크립트를 보기 전 기존 DataManager에 추가 선언된 변수를 보겠습니다. playerLeve..
-
Land Of Memories - Hp(Hit) - ObjectPool
이번 작업은 몬스터의 HP Bar 관련 구현과 Hit() 함수플레이어의 HP Bar 관련 구현과 Hit() 함수를 다뤘습니다. 바로 본론으로 들어가, Monster의 하이어라키 계층구조부터 살펴보겠습니다.Canvas를 World Space로 하여 3D 공간에 렌더링 되게 하였습니다. Canvas Render Mode Screen Space - Overlay일반적인 UI 모드로 카메라에 영향을 받지 않고 항상 화면 위에 고정인 형태화면 크기에 따라 UI 요소의 크기가 조정(메인 메뉴 UI 같은) Screen Space - Camera특정 카메라 기준으로 렌더링 됨Ui가 카메라 위치와 회전에 따라 움직일 수 있음(2D 미니맵 같은) World SpaceCanvas가 게임 오브젝트처럼 취급되며 이 Ui 요소..
-
Land Of Memories - Menu - Stage
안녕하세요. 이번글에서는 Menu - Stage와 DataManager의 stageLevel01이 동기화되는 작업을 구현하였습니다. 먼저 영상 부터 보시겠습니다. 먼저 MenuStage 스크립트에서 관리할 변수들을 선언해 주었습니다. 아마 다 아시겠지만 인스펙터창 에서 자물쇠를 잠가 주시면 다른 오브젝트를 선택해도 인스펙터창이 변하지 않고 여러 개의 오브젝트를 한꺼번에 저장을 할 수 있습니다.! satgeLevel01 or 02각 1번과 2번 Frame입니다. 각 Frame에는 맵이 각 8개씩 담겨 있습니다. StageLevel... 01 or 02... Img해금의 여부를 알리는 자물쇠 이미지입니다. stageLock... 01 or 02... Img자물쇠 이미지 아래 Star 이미지입니다.맵이 해금되..
-
Land Of Memories - UI Design
안녕하세요. 추가 기능 구현에 들어가기에 앞서 UI의 디자인부터 작업해 보았습니다. 현재는 버튼 클릭 기능 구현만 작업된 상태이며, 각 UI와 버튼에 대해 설명을 한 뒤 하나씩 차례대로 기능을 구현해 나가겠습니다. 화면 상단 좌측에 있는 Level 표시입니다.플레이어의 경험치가 100이 되면 Level이 증가하며 경험치는 0으로 초기화됩니다. 화면 상단 중앙에 있는 맵 Text입니다.플레이어가 현재 있는 맵의 위치를 나타 냅니다. 화면 하단 중앙에 있는 플레이어의 체력 HP Bar입니다.스탯을 통해 최대치를 증가시킬 수 있으며대미지를 입으면 체력이 깎이게 됩니다. 화면 하단 중앙에 있는 플레이어의 경험치 EXP Bar입니다.사냥 및 퀘스트를 통해 경험치를 수급할 수 있으며,범위는 00.00%부터 1..
-
Land Of Memories - Quest (2) - KeyObject
Cry Npc의 기능 구현과 Key Object의 기능 구현을 나누려고 일지를 나눈 이유도 있지만, 선언할 변수와 추가를 해야 할 것을 나누려는 이유도 있었습니다. 하지만 곰곰히 생각해 보니 초기 기획 흐름도에서 플레이어가 로그아웃을 하게 되면 '리셋'이 되고 추가 변수는 DataManager에 퀘스트가 완료 됐는지 판단할 변수와 Cry NPC는 이 변수를 가지고 조건을 걸어주면 되는 것이었습니다. 가장 먼저 DataManager에 'stageLevel01' 변수를 선언해 주었습니다. 초기 상태는 stageLevel01 = false로 해금 여부가 False 인 상태입니다. 다음은 KeyObjectController 스크립트의 선언 변수입니다. popupAnimation popupAnimation 스크..
-
Land Of Memories - Quest (1)
이번 작업은 플레이어가 NPC와 상호작용 하여 퀘스트를 완료하는 작업 구현을 진행하며 작성할 것입니다. 또한 이 퀘스트를 완료하게 되면 다음 Stage(맵)으로 이동할 수 있는 구현을 할 예정입니다. 가장 먼저 배치된 Npc에 Box콜라이더를 입혀 주었습니다.(다 아시겠지만 BoxCollider 2D 가 붙어야 합니다) 저처럼 일반 3D용 BoxCollider를 추가해서 레이가 감지가 안 되는 이유를 찾는 불상사가 없길 바랍니다. 다음은 기존 Npc (Helper)를 클릭했을 때 실행되는 스크립트에서 추가를 할 것입니다. 위와 같이 else if로 npc의 name을 검색하는 조건문을 추가해 주었으며, 로그를 찍어 확인을 해보았습니다. NPC_Helper를 클릭했을 때와 달리 NPC_Cry를 클릭하..
-
Land Of Memories - Pixel Art
이번 작업은 픽셀 아트를 이용해서 이미지를 만들어 보았습니다. 플레이어가 NPC와 상호작용 하여 퀘스트를 받는 구현을 구현하고자 했었는데 제가 원하는 Sprite를 찾질 못하였습니다.(앉아서 울고 있는 아이 모습) 픽셀 아트 링크https://www.pixilart.com/ Pixilart - Share & Create Art OnlinePixilart, free online drawing editor and social platform for everyone. Create game sprites, make pixel art, animated GIFs, share artwork and socialize online.www.pixilart.com 이번 기회에 연습해보고자 작업을 진행했으며 완성된 모습은..
-
Land Of Memories - Loading Image
이번 글에서는 로딩 이미지 구현을 작업하였습니다. 전체 흐름을 관리할 State는 Manager 스크립트에 추가하였습니다. 초기 상태는 Loading 상태이며, UI 오브젝트가 꺼질 때 State = Playing으로 변환됩니다. 다음은 로딩 이미지입니다. BackGround 이미지와 그 하위에 캐릭터 이미지, 텍스트, 그리고 애니메이션 이미지를 넣어 주었습니다. 애니메이션 이미지는 애니메이션 클립을 하나 생성하여 시작 시 'Loading'이 실행되게 해 주었습니다. 다음 작업은 LoadingController 스크립트를 생성하였는데 time 변수를 선언하여서 오브젝트가 활성화될 때 실행될OnEnable() 함수에서 인보크를 실행시켜 주었고 오브젝트가 비활성화될 때 실행될 이벤트 함수인 OnDis..
-
Land Of Memories - Data Save - JSON
이번 작업은 유니티를 종료할 때 위치를 저장하고 새로 시작할 때 해당 위치로 불러오는 작업을 했습니다. 사용 방식은 저장할 데이터를 JSON 문자열로 저장을 하였으며, 불러올 때 JSON 문자열을 객체로 변환해 주었습니다. JSON을 사용할 때 "왜 사용하는가?"에 대한 질문을 사수분께 한 적이 있습니다. 일반 바이너리로 데이터가 저장된 파일을 볼 경우 00101010 01000011 00001111... 과 같은 데이터로 저장이 되기에 사람이 봐도 어떤 의미인지 알 수 없는 반면 JSON 같은 경우에는 저장된 파일이 { "level": 10, "hp": 1000.} 과 같이 텍스트 형태로 저장이 되기에 직접 수..
-
Land Of Memories - Monster Movement & Player Attack
안녕하세요. 오늘 한 작업은 몬스터의 이동 구현과 플레이어의 공격 기능을 추가 작업 하였습니다. 먼저 코드를 살펴보겠습니다. "MonsterMovement" 스크립트입니다. 선언된 변수는 다음과 같습니다. 특이사항으로는 obstacleLayer에는 Obstacle 레이어와 Player 레이어를 설정해 주었습니다. 다음은 OnEnable() 함수를 통해 오브젝트(몬스터)가 활성화될 때 현재 리스폰이 될 때 사용할 저장 포지션인 initialPosition과이동될 때마다 저장될 현재 위치인 targetPosition입니다. 다음은 InvokeRepeating를 사용하여 함수를 실행시켜주었는데요. 인자로는 (함수명, 첫 시작 시간, 반복 시간)입니다. 정적 느낌을 없애기 위해 invokeTimer를 ..
-
Land Of Memories - Npc (helper) & DOTween
이번 작업은 npc와 상호작용 하여 조작법을 알려주는 창을 연출해 보았습니다. 먼저 Helper Npc를 배치하고 애니메이션을 게임 시작 시 Idle이 반복되게 해 주었습니다.(특별한 기능은 아니고 정적 현상을 없애기 위함입니다.) 다음은 Ui를 만들어 주었습니다. 애니메이션 클립을 만들어서 동작을 할까 하다가 DOTween을 사용해 보기로 했습니다. DOTween 패키지에 대해 알아본 바를 간단히 설명하자면 Unity에서 애니메이션을 간단하기 처리할 수 있도록 돕는 애니메이션 툴이라고 합니다. 2D, 3D 모두 지원을 하며 위치 이동, 회전, 크기, 변화 등 다양한 애니메이션을 부드럽게 구현을 할 수 있다고 합니다. 애니메이션으로 제작할 경우 애니메이션 클립 리소스를 따로 관리를 해줘야 하는데 코드..
-
Land Of Memories - Tile Map (2)
안녕하세요. "세상에서 하나뿐인" 저만의 맵이 완성되었습니다. 기존 Water, Grass, Ground 세 가지를 조합해서 만들어 주었습니다. 이후 동작 테스트를 해보던 중 해결하지 못한 것들이 있어서 하나씩 해결을 해주었는데요. 첫 번째로 맵 밖으로 플레이어가 나가지 못하게 외각 Collider를 타일맵으로 입혀 주었습니다. 현재 Gird는 총 3가지가 있습니다.1. 기본 지형.2. Collider를 가진 지형.3. 투명화 된 Collider를 가진 지형.두 번째 로는 맵 밖으로 카메라가 이동되는 걸 방지하기 위해 로직을 걸어 주었습니다. 기존 "CameraFollow2D" 의 스크립트에서 작성을 하였습니다. 카메라가 움직일수 있는 최소, 최대 값입니다. 인스펙터창에서 테스트를 하며 값을..
-
Land Of Memories - Tile Map
안녕하세요. 오늘은 타일맵을 활용해 맵 디자인을 해보았습니다. 에셋은 'Top-Down 2D RPG Assets Pack'을 사용하였습니다. 먼저 타일맵의 레이아웃을 Rectangular로 만들어 주었습니다. 이후 Tle Palette에 Sorite를 올려 주었습니다. 구현하고자 하는 맵의 Grid는 다음과 같습니다. 다음은 Rule Tile을 만들어 주었습니다. 새로 생성한 룰 타일의 규칙도 같이 설정해 주었습니다.이후 나머지 타일들도 규칙을 설정해 주었습니다. 맵을 구성하고 디자인하던 도중 Water 타일은 Obstacle 레이어로 설정하여 이동이 안되게 하고 싶었습니다. 그리하여 타일을 하나 더 만들어 주었고, TilemapCollider에 TilemapCollider2D를 둔 뒤, 레이..
-
Land Of Memories - Camera Follow
카메라가 플레이어를 따라 이동하는 구현을 추가로 작업을 했습니다. 원래 이 전 글에서 이어서 일지를 작성을 하려다가.. 관리상 기능 별로 분할해서 작성하는 게 나중에 찾아보기도 편하고 관리하기가 보다 수월 할 것 같아 따로 작성을 하기로 했습니다. CameraFollow2D의 전체 스크립트 입니다. LateUpdate에서 카메라의 위치를 업데이트하는 이유는 플레이어의 이동이 완료된 후에 카메라가 따라가도록 하기 위함입니다. 또한 플레이어의 정보가 없다면 null을 반환하게 해 주며 정보가 있다면 조건문 안으로 들어와 계산을 합니다. Vector3의 x, y, z의 플레이어 position을 받아와서 Lerp를 사용해 주었습니다. Lerp의 인자는 (카메라 현재 위치, 카메라 목표 위치, 그리고 ..
-
Land Of Memories - Player Attack (Basic)
우선 가장 먼저 수정 사항이 있어 작성하도록 하겠습니다. 플레이어가 이동하려는 방향에 'Obstacle' 레이어를 갖은 콜라이더가 있으면 이동이 안되게 구현이 되어있습니다. 하지만 위와 같은 동작 구현이 되었을 때 위로 보는 방향키를 눌러도 위를 바라보지 않고 멈춰있는 현상이 있었습니다. 코드를 보면 장애물이 있다면 if-else에 else로 들어와 이동했던 방향의 Idle 애니메이션을 실행하는데요. 장애물이 있다고 판단하고 방향(direction)을 업데이트해주지 않아 발생한 문제였습니다. 이제 이동을 할 때 장애물에 막혀있다면, 이동은 하지 않더라도 방향은 업데이트가 됩니다. 다음은 플레이어의 기본 동작 구현 했습니다. 크게 3가지를 구상해 보았는데요. 1. 애니메이션 클립을 좌, 우,..
-
Land Of Memories - Player Movement (Anim)
플레이어 이동 관련 추가 업데이트를 하였습니다. 캐릭터 모델은 무료 에셋을 사용하였습니다. 유니티 엔진에서 설정한 것들을 먼저 살펴보겠습니다. 가장 첫 번째로 카메라의 Size를 조절하여 좀 더 넓게 시야를 볼 수 있게 해 주었습니다. 두 번째로 플레이어가 장애물에 가려지는 것을 없애기 위해 Sprite Renderer의 Order in Layer를 1로 조정해 주었습니다.(Obstacle 은 0입니다) 세 번째로 애니메이션 컨트롤러에 클립을 정리해 두었습니다.Idle_DownIdle_UpIdle_LeftIdle_RightWalk_DownWalk_UpWalk_LeftWalk_Right 로 총 8개의 애니메이션 클립이 있습니다. 네 번째로 Sprite Editor를 사용하여서 중심점을 잡아 주었습니다..
-
Land Of Memories - Player Movement
가장 처음으로 플레이어의 이동 로직을 구현해 보았습니다. Unity 엔진 부터 살펴보겠습니다. Sprite를 활용해 플레이어와 사각의 벽을 세워 둔 모습이며 사각의 벽 (Obstacle) 에는 레이어를 'Obstacle'로 적용해 주었습니다. 다음은 스크립트입니다. 스크립트명은 'PlayerMovement'입니다. 선언된 변수들은 다음과 같습니다. SerializeField 속성으로 설정되어 있으면 private 라도 인스펙터 창에서 값 조정이 가능합니다. moveSpeed플레이어가 목표 위치로 이동하는 속도를 나타냅니다. obstacleLayer이동을 막는 장애물 레이어 입니다. targetPosition 플레이어가 이동할 목표 타일 좌표를 저장합니다. isMoving 플레이어가 이동 중인지 ..
-
Land Of Memories - Prolog
안녕하세요. 이번에 2D 형태의 RPG 게임을 개발하면서 과정을 일지로 올리려고 합니다. 이전에 'RPG 튜토리얼'이라는 프로젝트를 3D로 개발한 경험이 있는데https://userkhk.tistory.com/32 이번 2D 게임은 100% 기획을 구성하고 작업을 한다기보다는 예전에 가장 많은 시간을 투자하고 또한 재밌게 했었던 '바람의 나라'라는 게임을 모티브로 개발을 해보려고 합니다. 또한 이러한 생각을 갖고 있던 중 우연히 '바람의 나라 - 클래식' 버전이 출시된다는 글을 보았고 유튜브를 통해 살펴보았는데, 잠시 추억의 나라로 빠졌었습니다.. 그리고 든 생각이.. 누군가 프로젝트를 제작해 보라고 부추기는 것 같았습니다..ㅎㅎ 솔직히 말씀드리면 아직 감이 잘 안 잡히는 부분도 있고 의외로 ..
-
RPG 듀토리얼 01. 에셋 준비물 (in Game 동영상)
안녕하세요. RPG 포트폴리오를 만들어 볼 겸 스스로 학습을 토대로 제작해보자 해서 만들게 된 rpg 튜토리얼 프로젝트입니다. 02 : 20초 아직 미완성 프로젝트이지만, 제작 과정과 함께 동작을 파트별로 나눠 개발 일지로 글에 담으며 지속적인 수정을 해줄 프로젝트 입니다. 현재까지 진행된 과정은 3 - 4주 정도 소요가 되었으며 다른 작업 중 수정되는 요소들도 있고 현재도 계속 수정 중이기에 정확히 가늠하기가 어렵습니다. 먼저 이 rpg 튜토리얼의 구성은 이러합니다. 1. Player, NPC(마을 주민, 장로, 상점, 교관, 부상당한 NPC), monster1,2, Boss 플레이어 이외의 8명의 상호작용을 할 오브젝트들이 필요합니다. 플레이어 - 이동 / 스킬 / 대시 구현으로 시작해서 구현할 Li..
-
RPG 듀토리얼 17. BOSS!!! 02 / 02 (Return & Die)
안녕하세요!! 오늘은 Boss의 Rturn 부분과 함께 대미지를 입어 Die 상태를 살펴보겠습니다. 사실 요즘 코딩 테스트를 하는 데 있어 저의 부족함을 깨닫고.. (절실히) 1일 1문제 (프로그래머스)를 실천해 보려고 했었습니다.. 만 Level 1 문제도 상당히 오랜 시간이 걸리며,, 저의 부족함을 절실히 깨닫고 알고리즘 공부에 힘을 싣고 있습니다... 해야 하는 것도 많고 준비해야 하는것도 너무 많은 것 같아 처음에는 상당히 불안했었는데요. 너무 복잡하게 생각하지 않고, 현재 할 수 있는 것부터 하나씩 하나씩 나아가기로 했습니다. 목표가 있다는 것이 즐거움 아니겠습니까? 허허!! (내일의 저는 오늘의 저보다 성장해 있습니다.) 자. 우선 그건 그거고 이건 이거니깐! 우선 구현한 Boss의 스크립트부..
-
RPG 듀토리얼 17. BOSS!!! 01 / 02 (Attack)
안녕하세요!!! 오늘은 튜토리얼의 클리어가 되는 조건인 소탕할 Boss에 대해서 작업을 하겠습니다! 이렇게 생긴 녀석인데 유니티 에셋 스토어에서 무료로 가져온 에셋입니다. (상당히 많은 에셋들이 듀토리얼의 Boss로 거쳐갔습니다...) 이 보스의 위치는 이 병사가? 알려주었었죠 ㅎㅎ 바로 스크립트로 넘어가 보겠습니다. 보스를 제어하기 위해 EnemyBoss 스크립트를 만들었고 열거형으로 boss의 상태 값을 선언해 주었습니다. enum은 상수의 일종으로 const대신 사용하며 const값을 입력하지 않아도 자동으로 0,1,2.... 의 값이 대입됩니다. (코드가 단순해지며 가독성이 좋고, 상수 이므로 if문 swith문에서 사용이 가능합니다.) Idle : 대기 Mve : 움직임 Attack : 공격 R..
-
RPG 듀토리얼 16. Store buy and sell
안녕하세요!! 날씨가 따뜻해지다가 다시 추워지다가.. 오락가락합니다. 다들 감기 조심하셔야 할 듯합니다 ㅜㅜ (겉옷 꼭 챙겨 다니세요!) 오늘은 상점 팝업 기능까지 마쳤으니 상점에 있는 아이템을 구매 및 판매하는 부분을 작업할 예정입니다. 상점에 있는 물건들(npc가 갖고 있는 물건)과 npc를 클릭하면 store창과 bag창이 팝업이 됩니다. (닫기 버튼은 panel에 eventTrigger에 Pointer Down 을 사용하여 비활성화 되게 해 줬었습니다.) 아이템 정보 창이 활성화될 시에는 두 가지 조건이 있었습니다. 1. Bag 안에 있는 아이템일 때 클릭을 할 시 2. Store 안에 있는 아이템을 터치/클릭할 시 Item_Action 스크립트에서 가방에 있는지 체크할 inBag 불 변수와 상점..
-
RPG 듀토리얼 15. Npc Store OpenStore
안녕하세요. 이번 글에서는 상점 npc에 대해 다룰 예정입니다. 구현 동작 목록을 보자면 1. 상점 NPC를 클릭하면 상점이 열리게 됩니다. 2. 상점에 있는 아이템을 구매 및 판매를 할 수 있습니다. 2가지로 크게 볼 수 있을 것 같습니다. Store프레임과 Bag프레임입니다. (그림적 감각은 타고나야 한다고 하던데,, 살짝 감각이 있는 것 같기도 하고..) 네 STORE프레임은 간단한 이미지로 만들었으며 각 슬롯과 슬롯의 자식으로 텍스트를 붙여주었습니다. NPC들의 퀘스트 창과 똑같이 Panel을 만들어 Panel을 터치/클릭 시 비활성화를 되게 만들었으며 경계 선을 지점으로 위쪽은 StoreFrame이 비활성화되며 상점 npc를 터치 / 클릭 시 StoreFrame과 BagFrame이 같이 켜지게 ..
-
RPG 듀토리얼 14. Object Pool & item Gold
안녕하세요. 원래 상점 NPC를 작업하려고 했는데 ObjectPool을 적용한 코드 작업을 보려고 합니다. Enemy를 죽이면 50%의 확률로 골드 아이템이 생성됐었는데요. 새로 생성하는 것보다, 오브젝트 풀 방식으로 관리하는 게 훨씬 효율적이니 간단하지만, 효과적인.. 처음엔 잘 모르지만 점점 효과가 누적되면 태산이 되는 바로 저 같은.. 네. 바로 코드로 들어가겠습니다. 우선.. 작업한 부분을 어디서부터 봐야 할지 찾아보다가 gold 아이템 구현 부분을 설명 안 드린 것 같아 Enemy가 죽으면 떨어트릴 Gold Item 작업 부분부터 먼저 보면서 천천히 나가겠습니다. gold에 입혀질 Item_Gold스크립트의 전체 스크립트입니다. gold_Text : 얻는 골드를 시각화해줄 text입니다. (Te..
-
RPG 듀토리얼 13. player & NPC 상호작용
안녕하세요. 오늘은 player와 npc의 상호 작용하는 부분을 올리려고 합니다. 마을에는 각 npc들이 존재하며. 현재 배치할 npc오브젝트의 구현 목록은 마을 주민 / 장로 / 상점 / 교관 / 부상당한 병사 로 총 4명의 npc를 구성할 것입니다. 현재 예상으로는 상점을 제외한 나머지 npc의 동작 구현 목록을 보며 상점의 팝업 기능과 구매/판매 기능을 따로 작성하지 않을까 싶습니다. 이 프로젝트는 단순 튜토리얼을 구현한 것이기에 따로 플레이어의 육성은 없지만, 보스를 소탕하기 전까지의 퀘스트를 NPC인 교관에게 받으며 안내를 받고 있습니다. 또한 NPC와 대화를 하거나 일반 몬스터를 잡을 때 경험치를 주며 퀘스트를 클리어할 때에도 경험치를 받을 수 있습니다. 각 렙에 맞게 스킬의 잠금이 해제됩니다..
-
RPG 듀토리얼 12. Player Skill (Skill 01 - 03)
안녕하세요. 지난 글에는 skill00 인 파이어 볼 스킬에 대해 알아봤었죠. 원래 스킬 전부를 보려고 했는데 설명하다 보니 이어지는 동작 체계들이 많아서. Skill00번과 CalulateDmg(대미지 계산 기능)을 봤었습니다. 지난 글에서 설명드린 부분을 제외하고 오늘은 나머지 스킬 01 - 03번까지 보려고 합니다. 자 그럼 가장 기본 스킬인 Skill 00을 제외하고 01번부터 03번 까지 빠르게 보겠습니다. SkillFire01 스크립트입니다. 01번과 비슷하며 간략하게 설명한 후 넘어가겠습니다. targetNot : 타깃이 지정 안 됐을 시 공격할 target입니다. target : 타깃이 지정됐을 시 공격할 target입니다. speed : skill01의 스피드입니다. hitEffect :..
-
RPG 듀토리얼 11. Player Skill (Skill 00 & Calulate)
안녕하세요!!! 오늘은 각 공격 스킬에 대해 알아보려고 합니다. 각 공격 스킬에는 1. 파이어 볼 : 가장 기본적인 스킬 입니다. 2. 애로우 샷 : 관통을 하는 스킬입니다. 3. 블랙홀 : 범위 내에 적을 기절시킵니다. 4. 힐 : 체력을 최대 20% 올려줍니다. 4가지의 이름을 지어 봤습니다 ㅎㅎ 1, 2, 3번 같은 경우에는 총 세 가지 이펙트가 존재합니다. 1) 캐스팅을 시전 할 때 2) 스킬 발사를 할 때 3) 스킬을 맞았을 때 4번은 자체적인 힐 스킬로 1) 스킬 발사를 할 때 만 있습니다. 쿨타임은 길지만 캐스팅 시간은 짧게 구현하여 즉시 발동되게 해 봤습니다. 각 스킬 이펙트는 제가 Particle System을 이용해서 만든 파이어볼과 파이어볼 히트 이펙트를 제외하곤 만들어져 있는 에셋을..
-
RPG 듀토리얼 10. Player Skill (Casting)
안녕하세요!! 지난 시간에 UI의 버튼을 누르면 지정된 시간에 맞게 쿨타임이 생기며 시각적인 효과를 버튼의 Fill Amount로 봤었는데요. 오늘은 각 스킬 사용 시 캐스팅과 동작 구현을 볼 것입니다. 지난 시간에 SkillBtn 스크립트에서 Casting() 함수를 실행시키는 코드를 봤었습니다. 이 Casting 함수는 PlayerController에 구현을 했는데요. Casting 함수를 구현하는데 필요한 target이나 각 변수들의 편리함도 있었지만 이 스킬은 스킬 버튼이 아닌 player가 사용을 하는 것 이기에 관리적인 측면에서 PlayerController에 담았습니다. 우선 캐스팅 함수를 실행하기 위해 선언 변수들부터 보겠습니다. onCasting : 캐스팅 중인지 확인할 불 변수입니다. ..
-
RPG 듀토리얼 09. Player Skill (CoolTime )
안녕하세요. 오늘은 Player의 스킬 중에서 CoolTime을 먼저 보겠습니다. 공격 스킬 구성은 총 4가지가 존재하며 1. 파이어볼 가장 기본 스킬로 불이 나가며 공격을 합니다. 2. 애로우 샷 기를 모아 화살이 나가며 관통이 됩니다. 3. 블랙홀 적 들을 기절 시킵니다. 4. 힐 에너지를 채워 줍니다 기본 공격 / 슬라이딩 두 가지가 존재합니다. 각 이미지는 두 개를 겹쳐 놓은 뒤 앞에 있는 Image의 Type을 Fillde의 radial 360으로 주어 쿨타임이 시각화를 더 해 주었습니다. 이렇게 만들어 준 이유는 바로 쿨타임을 적용하기 위해서 입니다. 이 이미지가 Fill Amount를 이용해 쿨타임이 적용된 것처럼 시각적인 효과를 보이는 코드를 보겠습니다. 스킬의 기본 정보를 새로운 스크립트..