게임 개발 공부 기록

67일차 - Abyss_Slayer 최종 팀 프로젝트 16 (중간 정리 1)

00lwt 2025. 4. 28. 20:39

오늘은 중간 발표 전 프로토타입을 합쳐보고 각종 버그와 미흡한 부분을 발견하여 한번 정리를 하는 시간을 가졌다.

▶▷ 스킬 관련 트러블 슈팅

미흡한 부분
메이지의 a 스킬 투사체가 플레이어와 부딫혀도 사라지는 현상

 

원인
팀원이 IHasHealth라는 인터페이스로 보스와 플레이어의 체력을 모두 관리하는 구조로 변경하는 과정에서 스킬 부분에도 코드를 조금 수정하였는데
투사체 충돌 시 데미지를 전달하는 부분에서 IHasHealth를 가진 오브젝트 모두가 타겟이 되어버림

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.TryGetComponent<IHasHealth>(out IHasHealth enemy))
    {
        enemy.Damage((int)damage,transform.position.x); // 데미지 전달
    }

    if((1 << collision.gameObject.layer | includeLayer) == includeLayer)
    {
        ReturnToPool(); // 투사체 반환
    }
}

 

해결
조건문에 enemy is Boss라는 조건을 추가하여 보스 스크립트를 갖고 있으면서 IHasHealth도 있어야만 충돌되도록 수정하여 해결(임시로 돌아가도록 하기 위해 수정한 내용이라 나중에 리팩토링 할 예정이다.)

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.TryGetComponent<IHasHealth>(out IHasHealth enemy) && enemy is Boss)
    {
        enemy.Damage((int)damage,transform.position.x); // 데미지 전달
    }

    if((1 << collision.gameObject.layer | includeLayer) == includeLayer)
    {
        ReturnToPool(); // 투사체 반환
    }
}

 

내 부분의 코드가 변경될 경우 변경이 끝난 후 어느 부분이 바뀌었는지 확인해야 했는데 신경쓰지 않고 그러지 못한 내 실수였고 좀 더 꼼꼼히 점검해야겠다는 생각이 들었다.