일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- 유니티
- 내일배움캠프
- UnrealEngine
- 이분탐색
- Firebase
- Unity
- Unity3d
- 스택
- 스파르타내일배움캠프TIL
- 구현
- 워크플로
- 언리얼엔진
- C++
- BFS
- unityui
- 해시
- Inventory
- FSM
- Unity2D
- QueryDSL
- 포톤
- 순열
- 스파르타내일배움캠프
- 프로그래머스
- UE4
- Photon
- 유클리드호제법
- 문자열
- c#
- Today
- Total
목록유니티 (15)
개발 낙서장
구현 동기 퀘스트를 만들었으면 NPC와 대화해 수락, 진행, 완료를 할 수 있어야 한다. 특정 조건을 만족하면 자동으로 완료되는 퀘스트들도 있지만 나는 NPC를 통해서만 수락, 완료가 되도록 했다. 구현 내용 대화 UI 우선 NPC에게 말을 걸었을 때 나타나는 UI를 가장 먼저 만들어야 한다. 대화 UI는 이 UI 하나에서 대화, 퀘스트 보기, 수락, 완료 등이 다 진행되도록 구현했다. 지금 와서 보니 조금 난잡하기도 하고 어느 정도 수정이 필요해 보이긴 하지만 일단 기능에는 문제가 없으니... 이렇게 UI를 다 만들었다면 동작하게 할 스크립트가 필요하다. 나는 대화 UI도 간단한 상태 패턴으로 구현했다. 먼저 Enum으로 현재 UI의 상태들을 정의해줬다. 이 UI에 존재하는 모든 버튼을 누르면 호출되는..
구현 동기 퀘스트 없는 RPG는 존재하지 않는다. 꼭 위 사진과 같은 형식의 퀘스트가 아니더라도 게임을 진행하는 데에 있어 플레이어가 반드시 해야 하는 행동이나 달성해야 하는 조건 등 또한 퀘스트(혹은 미션)이다. 제 아무리 간단한 게임이라도 게임에 목표가 있으며 목표에 도달하기 위해서는 조건이나 행동들을 만족해야 한다는 것이다. 그래서 나도 간단하게나마 퀘스트를 구현해야겠다고 생각했다. 구현 내용 우선 퀘스트는 정말 여러가지 형태로 만들 수 있는데, 나는 퀘스트를 타입 별로 나누는 식으로 설계했다. 나누는 기준은 퀘스트 달성 조건으로 몬스터를 잡는 헌팅 퀘스트, NPC와 대화하는 대화 퀘스트 두 가지로 구성했다. 정말 간단하게 구상했지만 그래도 들어가는 변수가 꽤 있는데, 변수의 기능은 다음과 같다. ..
기존 개발 링크 https://dachomi97.tistory.com/27 구현 동기 전에 간단히 수정했던 몬스터 체력바인데 같은 몬스터의 체력바 크기가 달랐었다. 게임에 문제가 가는 버그는 전혀 아니지만 그냥 보기에 불편하기도 하고 왜 다를까 궁금해서 수정해야겠다고 생각했다. 구현 내용 몬스터 Collider는 이미 프리팹으로 만들어놓은 거라 사이즈가 변할 리가 없을 텐데 대체 왜 사이즈가 다르게 넘어갈까 고민해봤더니 한 가지 답을 찾을 수 있었다. 몬스터마다 Local 상 좌표, 회전값이 다르기 때문에 실제로는 같은 값이어도 넘겨줄 때에는 World 기준으로 넘겨주기 때문에 값이 다르게 나오는 것 같다. 실제로 간단한 테스트를 해본 결과 몬스터가 생성될 때와 체력바가 값을 넘겨받을 때의 값이 다르다는..
기존 개발 링크 https://dachomi97.tistory.com/25 구현 동기 이것이 기존에 구현했던 몬스터 체력바이다. 체력바를 Instantiate하고 UI 캔버스에 전부 집어넣은 다음 몬스터의 3D 좌표를 스크린 좌표로 변경하고 이 좌표를 다시 캔버스 좌표로 변경하는 작업을 실시간으로 해주어야 하기 때문에 꽤 비효율적이고 오류(다른 UI를 덮는다던가 보이지 말아야 할 상황에서 보인다던가)도 종종 발생했기 때문에 바꾸기로 생각했다. 구현 내용 정말 간단한 방법인데, 체력바들을 UI 캔버스에 전부 집어넣고 관리하는 것이 아니라 각 몬스터 오브젝트가 각각의 캔버스를 갖고 거기에 체력바 이미지를 넣어 관리해주는 방법이다. 몬스터가 생성될 때 체력바 오브젝트도 같이 생성 몬스터의 위치, 크기에 맞게 ..
구현 동기 RPG에서 기본 중의 기본이라 함은 성장이다. 사냥을 해서 레벨업을 하고 좋은 아이템을 장비해서 능력치를 올리고 강화 등의 아이템 투자를 통해 더욱더 강력해져서 더욱 강한 보스나 레이드에 도전하고 클리어하는 것이 궁극적인 목표라고 할 수 있다. 이런 성장에 있어서 가장 기본이 되는 '스탯'은 RPG에서는 뗄레야 떼어놓을 수 없는 존재이다. 지금까지 수많은 RPG 게임을 해왔지만 어떠한 방식으로든 스탯 개념이 존재하지 않았던 게임은 없었다. 구현 내용 나는 아주 간단하게 스탯 시스템을 구현했는데, PlayerManager라는 스크립트를 만들고 여기서 모든 레벨과 능력치를 관리하게 해 주었다. 변수가 좀 많은데 다 캐릭터 능력치에 관련된 부분이다. 초기값을 설정했으며 능력치에 관련된 모든 부분은 ..
※ https://www.youtube.com/watch?v=MO_XEHGzDLM 영상을 참고하여 제작하였습니다. 구현 동기 RPG라면 특수한 목적이 있지 않는 이상 몬스터의 HP를 표시해주어야 플레이어가 플레이에 불쾌감을 느끼지 않을 것이다. 체력바가 없는 게임의 대표 격인 '몬스터 헌터'이다. 몬스터 헌터는 몬스터를 한 번 사냥하는데 일반적으로 10분 이상의 시간 동안 전투를 해야 해서 체력바가 없으면 피곤할 것 같지만, 체력에 따른 패턴 설계와 부가적인 가시 요소로 인해 오히려 더욱 재미있게 플레이할 수 있다. 내가 제작하고 있는 게임 또한 일반적인 쿼터뷰 형식의 RPG이고 몬스터의 체력에 따른 패턴이 달라지는 구조는 아니라서 당연히 체력바가 있어야 플레이가 편할 것이다. 구현 내용 우선 화면에 표..
구현 동기 메이플 스토리에서 아크메이지(썬,콜)이 사용하는 체인 라이트닝이랑 팔라딘이 사용하는 마이티 묠니르 스킬을 보고 만들었다. 내 캐릭터는 검과 방패를 들고 있으니 방패를 던지는 스킬을 구현해야겠다. 구현 내용 우선 던져질 방패를 유니티 에셋 스토어에서 구했다. 그럼 이제 스킬 로직만 구현하면 되는데, 내가 생각한 로직은 다음과 같다. 스킬이 사용 중이지 않을 때 혹은 쿨타임이 끝났을 때, 스킬 범위 내에 적이 있어야 사용할 수 있다. Physics.OverlapSphere 함수를 통해 범위 내의 모든 적(LayerMask를 통해 구별)들의 리스트를 저장한다. 다음 타겟의 위치 정보를 리스트의 가장 첫번째 요소의 위치 정보로 저장하고, 리스트의 0번을 삭제한다. 방패는 타겟을 향해 일정 속도로 날라..