아마 마지막 글일듯 하다.
추가한 기능은 플레이어 피격 및 체력 UI 와 게임 종료 시 효과, 몬스터 애니메이션이다.
아주 간단간단하게 구현했다.
PlayController.cs 에 있는 함수이다.
public void TakeDamage(int damage)
{
Debug.Log("플레이어가 데미지 입음!");
hearts[heartsIndex].stairs--;
heartsImage[heartsIndex].sprite = heartSprites[hearts[heartsIndex].stairs];
if (hearts[heartsIndex].stairs == 0)
heartsIndex--;
if (heartsIndex < 0)
GameManager.Instance.EndGamePanel();
}
총알에 피격되면 이 함수가 호출되며 위와 같이 진행되는데 이게 무엇이냐면
struct Heart
{
public int stairs;
}
[SerializeField]
Image[] heartsImage;
[SerializeField]
Sprite[] heartSprites;
Heart[] hearts = new Heart[3];
int heartsIndex = 2;
이것들이다. Image 배열은 실제 Image 오브젝트이고(하트가 총 3개란 뜻)
Sprite배열은 하트의 모양의 종류이다. Enter the gungeon이란 게임을 모작하려했었기 때문에 체력은 그 기능을 가져왔다.
위와 같이 3가지 종류이다.
hearts는 Heart구조체로 어느 단계인지를 나타낸다. (체력대신 사용)
공격받으면 현재 체력( hearts[heartsIndex].stairs ) 이 한단계 내려간다.
이게 0이 되면 그 왼쪽 체력이 대상이 된다.
총 하트 한개는 2번 맞으면 없어진다는 뜻이다.
그리고 하트가 다 소모되면 GameOver 패널을 호출한다.
다음은 모든 방을 클리어하고 난 후, 효과인데 그냥 텍스트 띄우기다.
이렇게 엔터더건전같지는 않지만 핵심기능이라고 생각하는 맵 자동생성 기능, 미니맵을 포함한 아주 간단한 나머지 기능들을 구현해봤다.
이 프로젝트에 기능을 더 추가하진 않을 것이고, 코드 리팩토링은 진행할 수도 있다.
시간이 조금 걸린것 같은데 총 개발시간은 2주정도 되는 것 같다.
다음은 하이퍼캐쥬얼이나, 3D 게임으로 진행해볼 예정이다.
'2d 자동 맵생성' 카테고리의 다른 글
맵 자동 생성(11) (0) | 2025.05.14 |
---|---|
맵 자동 생성(10) (1) | 2025.05.14 |
맵 자동 생성(9) (0) | 2025.05.13 |
맵 자동 생성(8) (0) | 2025.05.13 |
맵 자동 생성(7) (0) | 2025.05.13 |