본문 바로가기
728x90

Unity11

Unity(11) - Stage Select & Lobby 저번 글에서 플레이어가 몬스터를 공격했을 때, 몬스터가 플레이어를 공격했을 때의 데미지 이벤트와 UI 출력까지 구현하였다이번 글에서는 바로 Main 씬에서 바로 게임이 시작되는 구조가 아닌 실제 게임 처럼 만들기 위해로비를 만들고 로비에서 스테이지 선택을 통해 게임을 시작하도록 만들고자 한다. 로비는 기본적으로 플레이어가 자신의 공간을 넓히고 꾸밀 수 있도록 인게임과 동일한 복셀월드를 사용할것이고 해당 복셀 월드에 인게임과 다르게 게임 시작을 위한 UI를 만들어 스테이지를 선택하고 시작할 수 있도록 할것이다스테이지는 난이도(맵 크기, 몬스터 수, 스테이지 개수)에 따라 나누어지며 이전 스테이지를 깨면 다음 스테이지가 해금되도록 만들것이며 랜덤 맵 게임의 유형과 멀티 플레이 유형의 게임도 만들것이기에 우선.. 2026. 5. 31.
Unity(10) - Take Damage Event & UI 몬스터가 플레이어한테로 향하는 로직을 구현하였으니 이제플레이어 위치로 이동 후 공격을 하는 것과 공격을 했을 시 플레이어 화면에 보여줄 피격 이펙트그리고 플레이어가 적을 공격하였을 때의 이펙트와 넉백을 구현할것이다 using System;using UnityEngine;using UnityEngine.EventSystems;public class PlayerCombatController : MonoBehaviour{ [Header("Refs")] [SerializeField] private Camera cam; // 플레이어가 바라보고 있는 카메라 방향(공격 기준) [SerializeField] private CharacterStats ownerStats; // 플레이어 자신의 스탯 .. 2026. 4. 28.
Unity(9) - Random Spawn Monster & A* 이제 저번 글의 마무리에 적었던 맵의 끝에서 몬스터가 생성되도록 만들것이다.그렇기에 오늘은 몬스터를 일단 만들어주는 세팅부터 할 것이다.using System;using UnityEngine;public class CharacterStats : MonoBehaviour{ [Header("Health")] [SerializeField] private float maxHealth = 100f; // 최대 체력 [SerializeField] private float currentHealth = 100f; // 현재 체력 [Header("Combat")] [SerializeField] private float attackPower = 10f; // 파워 [SerializeFiel.. 2026. 4. 27.
Unity(8) - Map Error Resolution 몬스터를 맵의 끝부분 1 ~ 5칸에서 일정 시간마다 랜덤 스폰을 시켜서 플레이어 방향으로 쫓아와 공격하는 형식으로 만들건데이거를 해서 테스트를 위해서는 예전 맵을 만들때부터 있었던 가장 큰 치명적인 오류를 먼저 해결해야 한다. 캐릭터가 벽에 밀착하면 벽에 끼이는 부분(점프가 원활이 동작되지 않음)일부 블록을 깨서 나온 바닥을 밟으면 블럭은 렌더링이 되어져 눈에 보이나 피직스가 없는건지 충돌처리가 안되는건지 캐릭터가 바닥을 뚫고 떨어져 버리는 부분 이렇게 크게 두가지 정도의 치명적인 오류가 있으며 이것을 먼저 해결하고자 한다. 이동하는 부분에서의 오류는 없었으나 복셀 월드의 충돌메시 생성 방식에서의 오류에 의해 생기는 버그였다VoxelChunk.AddFace()의 삼각형 인덱스 순서가 면의 정점 배열과 맞.. 2026. 4. 13.
728x90