본문 바로가기

ui10

게임개발 중급(90) - Monster Killer(52) Monster Killer 점수 합산이전에 만든 점수를 얻는 과정은 플레이어가 스테이지에 진입하면, 해당 스테이지 내부적으로 설정된 시간이 지남에 따라 점수가 같이 감소하고, 클리어 타임에 맞는 점수를 획득하도록 구현했습니다. 그 과정에서 최소 점수도 20점으로 설정을 해주었는데 아직 한 가지 문제가 더 있습니다. 바로 재도전 시 같은 스테이지에서 여러 번 점수를 얻는 경우입니다. 지금은 아무런 장치가 없기 때문에 만약 최초로 1스테이지에서 50점을 얻고 다시 1스테이지를 도전하여 20점을 얻었다면 총 70점이 합산될 것입니다. 하지만 같은 스테이지를 재도전할 때에는 최고 점수를 기준으로 반영되어야 하기 때문에 이런 장치를 추가해 줄 것입니다.  게임 매니저에서 최고 점수에 대한 함수를 만들고  기존에 .. 2024. 8. 9.
게임개발 중급(63) - Monster Killer(25) Monster Killer(25) 저번시간부로 스테이징을 대략적으로 완료했습니다. 이제부터는 재화시스템을 만들어 보겠습니다. 재화 시스템 개념은 간단합니다. 게임을 한번쯤 플레이 해보셨다면 아시겠지만, 거의 대부분의 게임에는 재화가 존재합니다. 여기서 말하는 재화는 흔히 골드와 같은 화폐가 주로 사용됩니다. 게임의 종류에 따라서 엄청나게 많은 다양한 종류의 재화를 활요하기도 하고, 간단한 몇가지의 재화만으로 모든 게임요소를 즐길 수 있게 만들기도 합니다. 저는 이 재화시스템에 기본이 되는 골드를 먼저 만들어 보겠습니다. 골드 만들기 먼저 제가 만들고 있는 게임에서는 기본 매커니즘이 플레이어가 몬스터를 잡아서 다음스테이지로 넘어가는 것입니다. 그렇다면 몬스터를 잡는 과정에서 골드를 획득할 수 있어야 합니다.. 2023. 6. 27.
게임개발 중급(61) - Monster Killer(23) Monster Killer(23) 이전엔 몬스터 움직임에 따라 걷는 애니메이션을 연결시켜 주고, 다른 애니메이션과의 트랜지션이 자연스럽게 이루어 지도록 연결시켜주는 과정을 다뤄보았습니다. 이번엔 플레이어 체력이 0이 되었을 때 게임오버 화면과 재시작하는 UI를 만들어 보겠습니다. 게임오버 화면 만들기 UI 이미지를 사용해서 검은색으로 색상을 바꿔주고, 화면을 가득 채우도록 Rect Transform을 전체화면으로 고정시켜 줍니다. 그리고 텍스트를 추가해 GameOver를 입력해 줍니다. 저는 일단 투명도를 약간 조정해서 뒷 화면이 보이도록 만들어 주었습니다. 해당 화면에 게임을 재시작 할 수 있도록 Restart 버튼을 만들어 줍니다. 해당화면은 플레이어의 체력이 0이 되었을 때 등장해야 하므로 스크립트.. 2023. 6. 25.
게임개발 중급(50) - Monster Killer(12) Monster Killer(12) 저번에는 데미지 텍스트를 구현하는 과정에 대해 다뤄보았습니다. 이번에는 플레이어에게 스테이지에 대한 정보를 알려주기 위한 UI를 만드는 과정을 다뤄보겠습니다. 스테이지 UI 생성 스테이지 UI는 다양한 방식을 통해 사람들에게 다음 스테이지를 안내해 줄 수 있습니다. 저는 매우 간단하게 체력바와 같은 슬라이더를 사용하여 UI를 만들겠습니다. 체력바 밑에 작게 슬라이더 하나가 생겼습니다. 근데 이 슬라이더는 점이 4개가 존재합니다. 이 스테이지바에서 점은 몬스터의 개수 및 단계를 시각적으로 표시해줍니다. 저는 이 UI에서 체력과 마찬가지로 빨간색으로 된 슬라이더의 value값을 사용하여 진행도를 표시해 주겠습니다. Monster Controller using System.C.. 2023. 6. 11.
게임개발 중급(49) - Monster Killer(11) Monster Killer(11) 저번에는 몬스터의 부위별 데미지 적용에 대해서 알아보았습니다. 이번에는 데미지를 시각적으로 표시하는 방법에 대해서 다뤄보겠습니다. 데미지 UI 이 게임을 만들어 나갈 초반에는 체력바에 깎이는 양만 봐도 괜찮다고 생각하며 만들었지만, 더 체력이 높아지고 몬스터들이 강해지면 유저의 입장에서 체력바로 데미지를 보는것은 한계가 있다고 생각이 들었습니다. 그래서 데미지를 화면에 표시해주는 UI를 만들어 보겠습니다. 일단 가장 먼저 Text UI를 만들어 주어야 합니다. TextMeshPro를 생성해 줍니다. 그 다음에는 이 생성된 UI를 프리팹으로 만들어 주겠습니다. 그 이유는 해당 UI를 사용해서 몬스터가 피격당한 위치에서 데미지를 받았다고 표시해줌과 동시에 애니메이션을 적용하.. 2023. 6. 9.
게임개발 중급(35) - 3D 밤송이 게임 만들기(3) 3D 밤송이 게임 만들기(3) 저번엔 터레인에 다양한 텍스쳐 적용법과 나무를 생성해 맵을 꾸미고 게임을 만들기 위한 오브젝트 배치 및 설계까지 하였습니다. 이번엔 게임을 만들기 위해 필요한 스크립트를 작성해보는 시간을 갖도록 하겠습니다. BamsongiGenerator 이전에 밤송이 오브젝트를 통해 밤송이 프리팹을 만들었습니다. 우선 이 프리팹을 사용해서 밤송이 오브젝트를 맵에 생성하는 기능을 만들어야 합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class BamsongiGenerator : MonoBehaviour { public GameObject bamsongiPrefab; void.. 2023. 5. 26.
게임개발 중급(26) - 3D 게임 만들기(6) 3D 게임 만들기(6) 저번시간엔 시간관계상 4방향 UI를 만들고 자연스럽게 움직이도록 바꾸어주는 작업까지 진행하였습니다. 이번에는 원래 저번에 하려 했던 게이지 UI 시스템을 만들고, 이어서 소리와 파티클을 적용시키는 방법에 대해서 알아보겠습니다. 게이지UI 게이지 UI를 만들어 주겠습니다. 이번에도 에셋스토어에서 간단한 UI 이미지를 위해 에셋을 다운받습니다. 저는 Simple Round Gauge라는 에셋을 다운받았습니다. 에셋을 유니티 프로젝트에 임포트하면, 여러 사용할 수 있는 이미지들이 생깁니다. 저희가 이번에 만들것은 게이지 바입니다. 우선 UI로 이미지를 생성합니다. 이미지가 생성되었다면, 앵커와 RectTransform을 잘 조절해 위치를 정해줍니다. 저는 오른쪽 상단 구석에 배치하도록 .. 2023. 5. 16.
게임개발 중급(24) - 3D 게임 만들기(4) 3D 게임 만들기(4) 저번시간에는 아이템 생성, 방향키로 플레이어 이동하기 및 아이템 획득처리, 점수UI 처리를 하였습니다. 이번에는 UI를 사용한 플레이어의 움직임과 더불어 다양한 방식의 움직임에 대해 알아보겠습니다. UI를 사용한 플레이어 움직임 이번에 해볼 것은 키보드입력을 통한 움직임이 아닌 UI를 클릭하거나 스마트폰에서 게임을 빌드했다면, 터치를 통해서 이동을 조작하는 방식을 해볼 것입니다. 우선 에셋스토어에서 UI로 사용할 이미지를 찾아서 사용할 것입니다. 저는 "Simple Button Set 01" 이란 이름의 무료 에셋을 다운받았습니다. 에셋 스토어에서 다운받은 것을 유니티에서 사용하려면, 유니티에 들어가서 Package Manager -> Packages에 MyAssets로 들어가시면.. 2023. 5. 14.
게임개발 중급(20) - 유니티 엔진 활용(3) 유니티 엔진 활용(3) 지난 시간에는 Directional Light, Audio Source, Particle System 그리고 Prefab에 대해 알아보았습니다. 이번을 마지막으로 유니티에서 사용하기 좋은 컴포넌트 혹은 도구에 대한 이야기를 마무리 짓겠습니다. Animator(애니메이터) Animator 컴포넌트는 게임 오브젝트의 애니메이션을 관리하는 데 사용됩니다. 이를 활용하여 캐릭터나 오브젝트의 움직임에 따라 애니메이션을 변경하거나, 상호작용하는 오브젝트의 애니메이션을 구현할 수 있습니다. Animator는 두 가지 주요 요소로 이루어져 있습니다. 1. Animation Clips Animation Clip은 특정 애니메이션의 시간과 프레임에 대한 정보를 포함합니다. 애니메이션 클립은 캐릭터의.. 2023. 5. 10.
게임개발 중급(15) - 2D 플랫포머 게임 만들기(10) 2D 플랫포머 게임 만들기(10) 저번에는 장애물을 설치하고 플레이어가 닿으면 죽으며, 정해진 목숨을 전부 사용하면 게임오버가 되도록 게임을 설계해 보았습니다. 아직 게임 자체를 멈추진 못하지만, 플레이를 할 수 없는 상태로는 만들었습니다. 이번에는 게임 자체를 멈출 수 있는 방법에 대해 한번 알아보고, 고정된 위치에 있는 장애물이 아닌, 움직이는 장애물을 한번 만들어 보겠습니다. 게임 멈추기 게임의 진행을 멈추는 방법은 의외로 어렵지 않습니다. Time.timeScale 값을 변경하여 게임 시간을 조절할 수 있습니다. 이 방법은 게임을 느리게하거나 빠르게할 때 사용합니다. Time.timeScale 값을 0으로 설정하면 게임이 멈추고, 1보다 큰 값을 설정하면 게임이 빨라집니다. 그렇다면 life가 0.. 2023. 5. 5.