분류 전체보기 19

유니티 몬스터 AI 길찾기 Navmesh Navigation

이번 포스팅에서는 게임에서 Enemy(이하 적) 오브젝트를 만들어서 적이 플레이어의 캐릭터를 추적하도록 만드는 방법에 대해서 다루겠습니다. 게임에서 적은 지정된 목적지를 왔다갔다 하면서 패트롤하면서 움직이기도 하고, 플레이어를 향해 무작정 돌진하기도 하며, 플레이어를 인지하고 추적하기도 합니다. 패트롤 하는 적은 일반적으로 좌우로 진행하는 횡스크롤 플랫폼에서 많이 사용되며 이전 시간에 다루었던 문 오브젝트의 이동과 유사한 방식으로 처리가 가능한 단순한 방식입니다. 플레이어를 향해 돌진하는 방법도 플레이어 오브젝트를 찾아서 MoveToward 를 사용하면 시작과 동시에 캐릭터를 추적하는데 모바일 게임에서 좀비 때가 달려드는 핵앤 슬래시나 일정 방향으로 길 따라 목적지로 향하는 타워디펜스 장르에서 많이 사용..

카테고리 없음 2024.10.09

유니티 레벨 디자인을 위한 장치 - 4. 컨베이어 벨트와 부활 포인트

지금까지 만들었던 장치들이 게임 목표의 시간 제약, 목표를 한 번에 처리 못 하도록 폐기장소를 만들어서 여유로운 플레이를 못 하도록 하거나 자동문이나 가시함정으로 캐릭터에게 충돌로 인한 미션 실패가 되는 장치를 통해서 레벨 난이도를 높이고자 했습니다. 이번 포스팅에서는 즉시 게임오버가 되지는 않지만 캐릭터의 이동을 방해하여 게임 오버가 유도되는 장치를 만들어 보겠습니다. 우선 캐릭터의 이동을 방해하는 요소가 무엇일까부터 생각해 봅니다. 움직이는 방향과 움직이는 속도를 통해서 캐릭터의 움직임이 플레이어의 의도대로 조작이 쉽지 않게 만들 수 있습니다. 방향은 조작하는 키의 방향과 반대 방향으로 힘이 들어오거나 다른 방향으로 힘이 가해져서 캐릭터의 움직이는 방향이 바뀌거나 틀어지도록 할 수 있습니다. 속도는 ..

카테고리 없음 2024.10.07

유니티 레벨 디자인을 위한 장치 - 3. 문(Door), 함정(Trap), 마스킹 활용

게임 내에서 캐릭터가 어떤 방해도 없이 수월하게 움직인다면 게임이 너무 쉽고 단순해서 금방 지루해 질 수 있습니다. 그래서 게임은 점점 난이도를 높이는 장치를 조금씩 추가해 주어야 합니다. 이 예시 게임은 순간의 컨트롤 실수로 벽에 부딪히면 게임 오보가 되는 컨셉입니다. 따라서 난이도를 높이는 방법은 좁은 길목과 방향 전환이 많은 길목이 많으면 어려워 지며 이런 좁은 길에 문이 닫혀서 문에 충돌하는 장치를 추가하거나 함정이 땅에서 갑자기 튀어 나오는 부분이 있다면 좀 더 난이도를 높일 수 있습니다. 뿐만 아니라 월드 맵의 범위를 조금 넓히게 되면 배터리에 의한 게임 오버도 생각해야 하기 때문에 난이도가 더 올라가도록 조정할 수 있습니다. 그럼 문 오브젝트부터 순차적으로 만들어 보겠습니다. 1. 문 오브젝..

카테고리 없음 2024.10.04

유니티 레벨 디자인을 위한 장치 - 2. 자석 효과와 폐기 장소 만들기

게임 레벨 디자인에 필요한 장치에서 목표 오브젝트인 쓰레기를 폐기하는 장소와 쓰레기 최대 수용량을 만들어서 난이도에 영향을 주도록 해보겠습니다. 해당 기능의 디자인은 캐릭터가 쓰레기를 수거하면 게이지를 통해서 수거된 부분을 UI로 보여주며 최대 수용량에 다다르면 게이지가 가득찬 상태라 되고 더 이상 쓰레기를 흡입하지 못 하도록 만듭니다. 이럴 경우 폐기 장소를 찾아서 쓰레기를 버리도록 만드는데 가는 길목이 좁거나 장애물을 배치해서 난이도를 상승시키고자 합니다. 이전 포스팅에서 로봇 청소기는 목표물에 충돌하면 OnTriggerEnter2D 함수를 통해서 쓰레기 오브젝트 Tag를 구분하고 회수하면서 점수를 얻고 남은 목표물 개수를 카운트 다운시켰습니다. 쓰레기를 흡입하고, 모아서 버리는 사이클을 수행하기 위..

카테고리 없음 2024.10.03

유니티 레벨 디자인을 위한 장치 - 1. 배터리 디자인

게임을 시작하면 처음에는 이것저것 기능을 익히면서 상대하기 쉬운 몬스터나 단순한 퀘스트를 수행하지만 플레이 중반부로 가면서 체력이나 공격력이 높은 몬스터를 만나거나 던전을 가야하는 퀘스트 등 난이도가 조금씩 상승하도록 레벨이 구성되어 있습니다. 액션이나 RPG 장르가 아닌 캐주얼 게임에서도 스테이지의 난이도를 주기 위해 여러가지 요소를 만들어 넣습니다. Home Scape나 Garden Scape와 같은 퍼즐 게임에서도 난이도를 주기 위해서 수행해야 하는 목표물의 개수를 늘리거나 종류를 늘리기도 하며 목표 달성을 방해하는 장치나 또는 도움을 주는 장치를 디자인 합니다. 다양할 수록 레벨 디자인에 많은 도움이 되지만 처음 게임 개발부터 너무 많은 레벨 디자인은 개발 비용 및 시간이 크게 들기 때문에 기본적..

카테고리 없음 2024.10.02

유니티 Rigidbody2D, Collider2D, 이벤트 함수

이번 포스팅에서는 유니티에서 이벤트를 처리하는 방법과 관련 함수에 대해 알아보겠습니다. 이벤트라는 것은 무엇인가가 발생하는 것으로 게임에서는 유저의 플레이에 의해서 발생하게 됩니다. 게임에서 이벤트는 장르에 따라 또는 게임 무대에 따라서 매우 다양합니다. 어느 지역에 들어서면 적들이 출연하거나 NPC가 나타나는 이벤트, NPC를 클릭하면 퀘스트 창이 나오는 이벤트, 비행기 슈팅에서 보스를 처치하면 미션이 클리어 되는 이벤트 또는 보스의 Phase 2단계로 넘어가는 이벤트 등 모든 이벤트는 플레이에서 비롯됩니다. 이 플레이를 통해서 게임 오브젝트는 어떻게 이벤트가 발생했다고 알 수 있을까요? 일반적으로 유저의 입력을 통해서 게임 오브젝트에 이벤트를 호출하게 됩니다. 사실 캐릭터의 움직이는 조작, 전투, 승..

카테고리 없음 2024.10.01

유니티 부드러운 Scene 전환과 UI tween

이전에 레벨 씬과 스테이지1 씬을 만들어서 테스트 플레이를 통해 레벨 씬에 해당하는 버튼을 클릭하면 해당 스테이지로 씬 전환이 이루어지고 해당 스테이지에서 미션 성공 후 Next 버튼을 누르면 currentLevel + 1을 통해서 다음 스테이지로 이동하는 것을 했습니다. 그런데 씬 전환이 뭔가 어색하다는 것을 알 수 있습니다. 다른 게임을 플레이하고 나서 현재까지 개발된 상태의 예시 게임의 씬 전환을 보면 즉각적으로 씬 전환이 되는 것을 체감할 수 있습니다. 딱딱한 씬 전환을 부드럽게 만드는 방법은 여러가지가 있지만 가장 많이 사용하는 것이 Fade In & Out 입니다. Fade In & Out은 화면을 천천히 들어나게 하고 반대로 천천히 가리는 기능입니다. 예를 들어 연극이나 뮤지컬에서도 다른 장..

카테고리 없음 2024.09.30

유니티 Sound Manager와 AudioSource

게임 플레이를 하는데 흥미를 유발하는 시스템과 눈길이 계속 가는 아름다운 그래픽만으로 게임의 재미를 줄 수 있지만 이를 극대화 시키는 요소는 사운드라고 생각합니다. 상황에 맞는 BGM(BackGround Music)과 SFX(효과음)이 있어야 게임의 재미와 함께 몰입감을 줄 수 있기 때문입니다. 이번 포스팅에서는 유니티에 음원을 넣고, 이를 사운드 매니저를 통해 스크립트로 제어하는 방법에 대해 알아보겠습니다. 음원을 유니티에 적용하기 위해서는 먼저 음원을 구해야 하는데 그 전에 어느 부분에서 어떤 효과음이 나오고 스테이지에 따른 BGM은 몇 개를 사용할지를 정해야 합니다. 이 부분은 기획단계에서 정해야 작업을 수월하게 할 수 있습니다. 다시 한 번 강조하지만 기획은 게임 제작의 설명서이므로 개발 전에 꼭..

카테고리 없음 2024.09.28

유니티 프리팹 Prefab, 부모와 자식 오브젝트, 인스펙터창에 오브젝트 일괄 적용 팁

이번에는 레벨 씬에서 LevelDataList 오브젝트에 있는 Data의 Element를 활용해서 스테이지 버튼의 상태를 보여주는 방법을 포스팅하겠습니다. 어떻게 구현할지를 이미 구현하고 스샷을 남긴 그림을 첨부해보겠습니다. LevelDataList 오브젝트에 있는 Data Element에는 isOpen 값을 가지고 있고 미션 성공한 스테이지를 포함해서 다음 스테이지까지 값을 1로 바꾸어 저장하도록 되어 있습니다. 이제 이 값을 불러와서 시작함수를 통해서 버튼 상태에 적용하겠습니다. 먼저 위 그림에서 UI를 어떤 것이 필요할지를 분석해 봅시다. 첫번째 할 일은 버튼 UI image 컴포넌트와 button 컴포넌트 접근이며, 두번째 할 일은 스테이지를 표시하는 UI Text 상태 변경을 위한 text 컴포..

카테고리 없음 2024.09.26

유니티 Save and Load

게임에서 플레이 진행 상황을 저장하고 다시 불러오는 기능은 매우 중요합니다. 오랜 시간 게임을 지속해서 하기 어렵기 때문에 내 캐릭터의 레벨, 스테이터스, 재화, 탐험 구간, 퀘스트 진행 데이터로 만들어서 게임을 저장하고 다시 게임할 때 불러 올 필요가 있습니다. 하이퍼 캐주얼 장르 같은 간단한 게임에서는 게임저장 및 불러오기를 안 하는 경우도 있으나 최소한의 진행 레벨 상황이나 캐릭터 스킨 적용 목적을 위한 재화 때문에 간단한 게임저장 및 불러오기 기능을 사용하기도 합니다. 구글 플레이 스토어나 앱 스토어에서 다운로드 및 플레이 가능한 Helix jump라는 게임이 있는데 이 게임은 공이 계속 통통 튕길 때 플레이어가 좌우 조작만으로 공을 위험 지역이 아닌 안전 지역에서만 점프하면서 내려가도록 하는 게..

카테고리 없음 2024.09.25