본문 바로가기
게임 개발

[Unity] The Love 게임 - (4)

by chobbo 2024. 6. 10.

드디어 내일이 마감일!!

현재까지 만든 우리 게임의 화면이다

 

지금 시간이 부족해서 잔버그들이 꽤 있다.

고치는 법도 알고 있긴한데 제출해야 할 서류들이 너무 많아서.. . . ㅠㅠ 고치지 못하고있다

 

게임 씬

 

- 오늘 UI 디자인도 직접 바꿨다.

   약간 공포 느낌의 폰트와 에셋을 찾으려고 노력했다.

- 아쉬운 점 : 잘 보면 보스의 이름표가 돌아가있다. 저걸 플레이어 방향으로 항상 설정해줘야할듯..

 

 

퀘스트 창

 

- 퀘스트 부분을 직접 담당하여 구현했다. 

- 퀘스트 Scriptable Objects Data들을 UI에 띄워줬다.

 

- 퀘스트 버튼 누르면 오른쪽에 다음과 같이 상세 내용도 나온다.

- 아쉬운 점 : 지금 UI를 누르면 이전 UI들이 꺼지지도 않고, 게임이 멈추지도 않아서 플레이어 마우스 방향대로 계속 화면이 돌아간다. 팀원분이 담당하고 계신 무기 구현이 다 되고 버그가 잡혀 코드가 정상적으로 돌아가면 수정할 예정

 

인벤토리 및 제작대

 

- 지윤님이 구현해주신 부분! 

- 인벤토리는 구현해본 적이 있으나, 아이템 크래프팅 부분은 해본 적이 없어 나중에 꼭 직접 구현해 보고 싶다.

- DragAndDrop을 사용하여 구현하셨다고 했다.

 

 

- 문서 아이콘 누르면 제작 방법 UI가 뜬다.

- 아쉬운 점 : 시간이 부족해 아이템 icon들을 바꾸어주지 못했다. 별로 안이쁘다 ㅠ

 

 

전투

플레이어(정은지)에게 뛰어오는 보스(윤세나)

 

- 보스 및 몬스터들은 내가, 플레이어는 팀원분들이 구현해주셨다.

 

몬스터 패턴

이동 패턴

Idle -> Walk 반복하다가 플레이어가 공격 범위 안에서 감지되면 Attack 상태로 변한다

 

공격 패턴

- 보스 (윤세나) 패턴 

   1. 근거리 공격

   2. 사랑의 총알 3개 발사

- 금재은 & 안보연 패턴 : 근거리 공격

- 성지윤 패턴 : 원거리 공격 (사랑의 총알 발사)

 

- 아쉬운 점 : 가끔씩 몬스터들이 죽으면 오브젝트가 사라지지 않는 버그가 발생한다. 

몬스터가 죽으면

protected virtual void Die()
{
    for (int i = 0; i < Data.DropItem.Length; i++)
    {
        Instantiate(Data.DropItem[i], transform.position + Vector3.forward * 2, Quaternion.identity);
    }
    agent.enabled = false;
    animationController.DieAnim();
}

 

이 코드에서 animationController.DieAnim();를 통해 죽는 애니메이션을 틀어주는데

  public void DieAnim()
  {
      animator.SetTrigger("Die");
      StartCoroutine(DisableAfterAnimation());
  }

  IEnumerator DisableAfterAnimation()
  {
      yield return new WaitForSeconds(5f);
      animator.enabled = false;
      // TODO :: 사라지는 파티클
      gameObject.SetActive(false);
  }

 

코루틴을 사용해 죽는 애니메이션이 끝나면 오브젝트를 SetActive(false) 해주고 있다.

이것도 시간이 남으면 Debug를 찍어보며 확인해보아야될 것 같다.

 

플레이어 패턴

- 팀원분이 담당해주신 부분. 

- 시간 부족으로 도끼 공격은 구현이 안되었고, 활 장착 & 화살 발사 로직을 구현하였다.

 

- 제작대에 돌 1개, 나무 3개를 두면 다음과 같이 활이 나타나고 활을 인벤토리에서 더블클릭하면 장착된다.

짜잔 활장착

- 여기서 Alt키를 누르고 손을 떼면 화살이 발사된다

- 흑흑 아직도 여기서 버그난다... 몬스터 죽었을 때 버그 있는지 확인을 못하는중

   -> 새벽에 해결했다!!!! 세나님 수고하셨습니다!!!!!! 

조준 (zoom 당겨짐)
발사 (발사 파티클)

 

 

엔딩

- 내가 담당했다.

- 엔딩은 총 세가지로 구현했다.

 

EndingManager.cs

using UnityEngine;

public enum EndingType
{
    KillBoss,
    PlayerDie,
    Hidden
}

public class EndingManager : Singleton<EndingManager>
{
    [SerializeField] private GameObject[] _endingImages;

    public void CheckEnding(EndingType endingType)
    {
        switch(endingType)
        {
            case EndingType.KillBoss:
                // TODO :: 플레이어 구현시 연동
                //if(CharacterManager.Instance.Player.Inventory.curEquip == "정화의화살") EnableEndingImage(0);
                //else  EnableEndingImage(2);
                EnableEndingImage(0);
                SoundManager.Instance.Play(3, 0.2f, SoundType.Bgm);
                break;
            case EndingType.PlayerDie:
                EnableEndingImage(1);
                SoundManager.Instance.Play(2, 0.2f, SoundType.Bgm);
                break;
            case EndingType.Hidden:
                EnableEndingImage(4);
                SoundManager.Instance.Play(3, 0.2f, SoundType.Bgm);
                break;
        }
    }

    void EnableEndingImage(int idx)
    {
        GameManager.Instance.IsPlay = false;
        _endingImages[idx].SetActive(true);
    }
}

 

- 코드는 진짜 쉽게 짰다. 원래 준비한 엔딩은 다섯개였는데 시간 부족으로 3개밖에 넣지 못했다.

 

1. 보스 처치시 

이게 왜 해피엔딩

 

2. 플레이어가 죽으면

 

 

3. 히든엔딩 (신전에서 기도버튼 누르기)

숨겨진 신전 주위에 가면 버튼이 뜬다

 

- 사실 이건 팀원들만 아는 재밌는 포인트다. 껄껄

- 아쉬운 점 : 지금 신전 주위에 가면 뜨는 안내 문구의 레이어가 엔딩 UI보다 앞에 있어서 겹치고 있다.

 

'게임 개발' 카테고리의 다른 글

[Unity] 참새의 모험 (1) - 무한 맵 생성  (0) 2024.06.17
[Unity] The Love 게임 - 완성  (0) 2024.06.11
[Unity] The Love 게임 - (3)  (0) 2024.06.07
[Unity] The Love 게임 - (2)  (0) 2024.06.05
[Unity] The Love 게임 - (1)  (0) 2024.06.04