Unity_2기 내일배움캠프 TIL

Unity_2기 16주차 (230220)

잼잼재미 2024. 2. 20. 10:44

오늘은 최종 팀 프로젝트 배포를 예정했었지만, 불가피하게 버그 픽스를 진행했다.

 

트러블 슈팅


1. 멀리 있는 적에게 총을 쏠 때, 오류

 

멀리 있는 적에게 총을 명중하면 위와 같은 오류가 발생하고, 적이 동작을 멈추는 버그를 발견했다. 적이 총을 맞을 때, HitState로 변할 때, 어떠한 이유로 오류가 생긴 것이라고 생각했다.

 

 

public void Handle(EnemyController enemyController)
{
    _dir = new Vector3(_enemyController.Target.transform.position.x - transform.position.x, 0,
            _enemyController.Target.transform.position.z - transform.position.z).normalized;
}

 

이유는 간단했다. 적이 HitState로 전환될 때, 넉백을 구현하기 위한 Target과의 단위벡터 값을 구했다. 여기서 Target은 Player 또는 동료가 될 수 도 있기 때문에 Physics.OverlapSphere로 일정 범위 안에 있는 Target을 코루틴으로 감지해서 가장 가까운 Target으로 설정했다.

 

 

 

즉, 범위 안에 감지된 Target이 없어서 Target이 null 이기 때문에 발생한 오류였다.

 

 

private void Hit()
{
    Vector3 randomRange = new Vector3(Random.Range(-CurrentGun.PlayerGunSO.Accuracy, CurrentGun.PlayerGunSO.Accuracy), Random.Range(-CurrentGun.PlayerGunSO.Accuracy, CurrentGun.PlayerGunSO.Accuracy), 0);

    if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward + randomRange, out _hitInfo, CurrentGun.PlayerGunSO.Range))
    {
        GameManager.I.ObjectPoolManager.GunEffect("GunEffect", _hitInfo.point, Quaternion.LookRotation(_hitInfo.normal));

        Attack();
    }   
}

 

해결 방법은 불필요하게 적의 Physics.OverlapSphere 범위를 늘리는 것 보다, Player의 사정거리를 제한하는 방법이 적합하다고 판단했다. 

 

 

 

총의 피격을 담당하는 Raycast의 범위를 SO로 관리하여, Target을 감지하는 Physics.OverlapSphere의 범위보다 낮게 설정했다.

 

 

 

해결 완료!

 

 

회고


원래는 오늘 배포 예정이었지만, 마지막 QA 테스트 중, 버그를 발견하여 버그 픽스를 진행했다. 그 외에도 생각보다 마지막 테스트 플레이에서 잡다한 버그를 많이 발견했다. 그래서 배포를 내일로 미루게 되었다. 내일 오전까지 버그 픽스를 잘 마무리하고 배포를 진행하도록 하겠다!

'Unity_2기 내일배움캠프 TIL' 카테고리의 다른 글

Unity_2기 16주차 (230222)  (0) 2024.02.22
Unity_2기 16주차 (230221)  (0) 2024.02.21
Unity_2기 16주차 (230219)  (0) 2024.02.20
Unity_2기 15주차 (230216)  (0) 2024.02.16
Unity_2기 15주차 (230215)  (0) 2024.02.15