Unity_2기 내일배움캠프 TIL

Unity_2기 11주차 (230118)

잼잼재미 2024. 1. 18. 14:21

이때까지 구현한 Player, Enemy, Partner, 전투 시스템의 잔 버그들을 수정했다.

 

 

트러블 슈팅


1. ArgumentNullException

 

2. ObjectDisposedException

 

3. InvalidOperationException

 

위 세가지 오류가 적과 아군과 전투 중에 항상 나오지는 않지만 한번씩 오류가 났다. 구글링을 하여도 도저히 해결이 되지 않아서 새로운 TestScene에서 테스트를 해봤는데 오류가 나지 않았다. 아마도 에셋이 많고 용량이 높고 오브젝트들도 많아서 생긴 버그인 것 같다. 자세히는 모르겠지만 일단은 코드상 오류는 없다고 생각하고 넘어가기로 했다!

 

 

4. AttackState -> IdleState 애니메이션 전환 버그

 

 

적이 칼로 공격을 하고 Player와 일정범위를 넘어가면 Idle 상태로 변경되는데 이때 애니메이션이 Attack의 마지막 상태에서 멈추는 버그 발견. 원래는 AttackState에서 전환할 수 있는 State는 IdleState 뿐이다. 즉, AttackState에서 Player가 멀어지자 IdleState로 전환되고, 다시 ChasingState로 바로 연속으로 전환되는 것이다. 구글링을 하니 이렇게 빠르게 애니메이션이 전환되면 실행되지 않는 오류가 있을 수도 있다고 한다.

 

 

IEnumerator COUpdate()
{
    while (true)
    {
        _time += Time.deltaTime;
        _dir = new Vector3(_enemyController.Target.transform.position.x - transform.position.x, 0,
            _enemyController.Target.transform.position.z - transform.position.z).normalized;
        transform.LookAt(transform.position + _dir);

        if (_enemyController.Distance > _enemyController.SwordAttackRange && !_enemyController.IsSword)
        {
            _enemyController.Animator.ResetTrigger("Sword");
            _enemyController.ChasingStart();
            break;
        }
        if ((_enemyController.Distance > _enemyController.SwordAttackRange && !_enemyController.IsSword)
            || _enemyController.Distance < 0)
        {
            //_enemyController.Animator.ResetTrigger("Sword");
            _enemyController.Animator.SetTrigger("Idle");
            _enemyController.IdleStart();
            break;
        }
        if (_time >= _enemyController.SwordCoolTime && !_enemyController.IsSword
            && _enemyController.Distance <= _enemyController.SwordAttackRange)
        {
            _enemyController.Animator.SetTrigger("Sword");
            StartCoroutine(COSwordAttack());
            _time = 0;
        }       
        yield return null;
    }
}

 

그래서 AttackState에서 바로 ChasingState로 전환될 수 있도록 코드를 작성했다.

 

 

 

처음에는 코드를 작성해도 실행되지 않아서 당황했지만 애니메이션을 설정하지 않았다. 그래서 애니메이션도 설정하였다. ChasingState로 전환될 때, Run을 SetBool true 했다.

 

 

 

해결 완료!

 

 

회고


오늘은 전체적으로 이때까지 구현한 내용의 버그 수정을 진행했다. 뭔가 오류가 많이 떠서 이때까지 버그를 고치지 못했는데 테스트씬에서는 정상적으로 실행이 되는 신기한 현상이 있었다. 아마도 게임씬에서는 여러가지 오브젝트가 있기도 하고 내가 만든 기능이 아닌 다른 기능에서 오류가 날 수도 있다고 생각했다. 생각보다 우리 팀이 구현 속도가 느린편이 아니라서 이번주까지는 구현한 기능 정리 및 버그 수정을 진행하기로 했다. 다음주부터는 추가적인 다른 기능을 구현하도록 하겠다!

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

Unity_2기 12주차 (230122)  (0) 2024.01.22
Unity_2기 11주차 (230119)  (0) 2024.01.19
Unity_2기 11주차 (230117)  (0) 2024.01.17
Unity_2기 11주차 (230116)  (0) 2024.01.16
Unity_2기 11주차 (230115)  (0) 2024.01.15