0215 - 팀과제 후기

유시아·2024년 2월 16일
0

장르도전_팀과제

목록 보기
3/3

반갑다.
이번 팀과제를 하면서 코드타카랑 TIL작성을 할 시간이..
...도저히...
...
... 일단 후기는 정리가 다 끝나고 나서.

엊그제 TIL에서 쓴 대로 나는 UI 관리, 캐릭터 조작, 퍼마데스 시스템, 피해와 체력 관리, 그리고 추가로 사운드도 담당했다.

캐릭터 조작

사실 캐릭터 조작은 팀원 모두가 구현한거라 내가 했다는게 조금 모호하다.
캐릭터 조작까지는 팀원 모두가 어려움 없이 해낸 후에 각자 자기가 하고싶은 기능을 구현하기 시작했기 때문이다.
그래도 설명을 하자면,
우선 InputSystem을 사용해서 플레이어의 움직임을 받는다.

public void OnMove(InputValue value)
{
    //Debug.Log("OnMove" + value.ToString());
    Vector2 moveInput = value.Get<Vector2>().normalized;
    CallMoveEvent(moveInput);
}

public void OnLook(InputValue value)
{
    //Debug.Log("OnLook" + value.ToString());
    Vector2 newAim = value.Get<Vector2>();
    Vector2 worldPos = _camera.ScreenToWorldPoint(newAim);
    newAim = (worldPos - (Vector2)transform.position).normalized;

    if(newAim.magnitude >= .9f)
    {
        CallLookEvent(newAim);
    }
}
...

그 후 PlayerInputController 스크립트에서 조정을 해준다.
근데 이.. 코드를... 나만 쓴게 아니라... 다른 팀원들도 전부 썼더라..

UI관리

UI라 함은 내가 맡은 파트나 짜잘한 씬들의 UI만이라고 생각했는데... 오늘 발표 후 튜터님께서 "왜 아이템 UI는 설정하지 않았냐"는 질문에 아무 말도 할 수 없었다. 그것도 했어야 했구나... 하긴 UI 담당이면서 나머지 UI를 설정 안한게.. 말이 안되긴 해...
그래도 일단 구현은 했으니까..
게임시작씬
게임오버씬
게임클리어씬
그리고 플레이어 애니메이션 등... 단순한 오브젝트 배치긴 한데, 에셋 찾기가 여간 힘든게 아니더라,,,

퍼마데스 시스템 / 플레이어 체력, 피해 관리

무박 2일동안 과제를 마무리 하면서 제일 많이 시간을 잡아 먹은 파트.
진짜 지금 생각해도 구현한게 기적같다.

우선 HealthController 스크립트를 만든다.

public float cooldownHit;
private float rateOfHit;
private GameObject[] life;
private int qtdLife;

쓰일 변수들을 생성해준다.
life는 화면 좌상단에 나오는 플레이어의 체력UI와 연결을 시키기 위함.

void Start()
{
    rateOfHit = Time.time;
    life = GameObject.FindGameObjectsWithTag("Life");
    qtdLife = life.Length;
}

스타트 함수에서는 life 변수가 life 태그의 오브젝트로 지정하도록 해준 후
해당 이미지들을 배열로 선언한다.(Life, Life(1), Life(2)

void OnCollisionEnter2D(Collision2D other)
{                      
    if (other.gameObject.tag == "Monster")
    {

        Hurt();
    }
}

또한 몬스터에게 Monster태그를 달아준 후 해당 태그의 오브젝트와 충돌할 때마다 hurt 메소드가 나오도록 해주고,

void Hurt()
{
    if (rateOfHit < Time.time)
    {
        rateOfHit = Time.time + cooldownHit;
        life[qtdLife - 1].SetActive(false);
        qtdLife -= 1;
    }

    if (qtdLife <= 0)
    {
        GameManager.instance.GameClear = false;
        if(!GameManager.instance.GameClear)
        SceneManager.LoadScene("GameOverScene");
    }
}

hurt 메소드에서는 (충돌 시) 체력이 -1 됨에 따라 배열로 지정해준 체력 UI 이미지도 1개씩 비활성화 되도록 해준다.

이후 해당 배열의 수가 0보다 작거나 같으면 플레이어의 체력이 모두 소진된것이므로 GameOver 씬으로 가도록 한다.
한 스크립트 안에 체력회복 및 피해관리와 퍼마데스 시스템을 모두 구현해냈다!!!

사운드

사운드는 배경음과 플레이어가 상호작용하는 모든 것에 효과음을 넣고 싶었는데, 시간이 그렇게 많지 않았다....힝...
그래서 간단하게나마 씬마다 오디오소스 오브젝트를 배치해서 씬이 바뀔 때마다 다른 배경음이 나오도록 했다.

후기

시간이...없다는게 어떤 느낌인지 처음 알았다...이때까지의 시간부족 이슈는 진짜 다 가짜 이슈들이었고, 이번이 진짜다.

팀과제 초반, 3D 퍼즐게임을 기획했다가 시간분배를 잘못해서 마감 3일전에 엎어졌다...
이후 2D 로그라이크로 장르를 변경하여 다시 해봤지만 마감이 이틀이 남도록 역할 분배에서 난항을 겪고 기초틀 작업조차 마무리 되지 않았다. 역할 분배가 뭔가... 뭔가 분배를 하면서 뭔가 이상함을 느끼긴 했는데 아니나다를까 관련있는 파트끼리 묶어서 가져갔어야 했는데... 각자 하고싶은대로 가져갔다가... 난리가 났다... 팀장인 내가 비록 사다리타기로 뽑힌거지만 좀 더 주도적으로 계획을 빡빡하게 세웠어야 했는데... 아니다 역시 내 역량 부족이 맞다...

그래서 다음부터는 좀 더 계획을 세울 때 집중해서 빡빡하게 세워야겠다는 생각을 했다.
그러지 못해서 이번 팀과제는 정말,,,정말,,, 죽음의 나날이었으니까,,,

다음 과제도,,,힘,,,내자,,,,아자아자,,,,,

profile
패션컴공탈출기

0개의 댓글