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
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
[Unity] 믹사모 에셋 Animation 이동 관련 오류 발생 원인 및 해결 방법 (0) | 2022.08.08 |
---|---|
[Unity] FPS에서 피격 시 KnockBack 넉백 피격효과 구현 (0) | 2022.08.05 |
[Unity] 타겟을 향한 오브젝트 회전, 캐릭터 컨트롤러 이동(transform.rotation, Quaternion.Lerp, Quaternion.LookRotation) (0) | 2022.08.05 |
[Unity] 유니티 Layer & Tag 비교, Layer 충돌 체크와 비트 연산 활용법 (0) | 2022.08.05 |
[Unity] Level Design 레벨디자인 파이프라인 (0) | 2022.07.28 |