[Unity] OnDrawGizmos() 함수를 사용하여 시각적으로 범위 체크하기 DrawLine, DrawRay

728x90

OnDrawGizmos() 함수를 사용하여 시각적으로 범위 체크하기

public float attackRange = 2;

private void Move()
    {
        Vector3 dir = target.position - transform.position;
        float distance = dir.magnitude;
        dir.Normalize();
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime);

        cc.SimpleMove(dir * speed);

        // 공격 범위에 타겟이 들어오면 상태를 공격으로 전환하고 싶다
        if(distance < attackRange)
        {
            m_State = EnemyState.Attack;
        }
    }

Enemy 오브젝트가 attackRange 거리 안으로 들어오면 Player 오브젝트를 공격하는 코드를 구현하였다. 하지만 attackRange = 2는 얼만큼의 범위를 포함하는지 시각적으로 확인할 수 없는 한계를 가지고 있다. 특히, 개발자들은 대략적인 거리 값을 알고 있지만, 기획자들이 확인했을 때는 어려움이 있을 수 있다.

또한 public 값으로 attackRange를 선언했기 때문에 기획자의 입맛에 따라 값을 조정할 수 있는데 범위 체크를 실시간으로 체크할 수 있는 시각적인 해결 방법이 필요하다.

 

이럴 때 우리는 DrawLine(), DrawLay(), OnDrawGizmos() 함수를 사용할 수 있다.

private void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, attackRange);
    }

해당 함수를 Update 해주면 다음과 같이 공격범위에 대한 WireSphere가 생성된다. attackRange를 public으로 선언해주었기 때문에 실시간으로 WireSphere 값을 조정해주면서 테스트해볼 수 있다.

 

728x90