2d 자동 맵생성

맵 자동 생성(12)

게임만드는학생 2025. 5. 15. 03:37

아마 마지막 글일듯 하다.

추가한 기능은 플레이어 피격 및 체력 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