본문 바로가기

Unity/Unity3D_Quater

Unity3D_Quater - AI시야각 구현(1)

1. 시야각 구현

 - AI오브젝트를 위에서 아래로 바라보았을때 Z축이 transform.forward 이고, x축이 transform.right이다

 - AI의 시야각이 60도라고 한다면 θ는 30도가 되고 

 - 우리는 방향값인 벡터만 알면되기 때문에 아래 원의 반지름을 1이라고 가정한다

 - 그러면 30도 각도에 위치한 단위벡터값은 (sin θ, cos θ)가된다

 

 

 

 

 

 

참조: 유투브 케이디

youtube.com/watch?v=jY49bG8Z7KQ&list=PLUZ5gNInsv_PZPDqJSs6IQVRFPQTbf9t6&index=2

 

 

 

2.시야 부채꼴 그리기

참조: ansohxxn.github.io/unitydocs/handles/

DrawSolidArc

  • DrawSolidArc 색깔이 꽉 채워져 칠해져 있는 부채꼴(Arc)를 그린다.
    • 인수
      • Handles.DrawSolidArc(eyeTransform.position, Vector3.up, leftRayDirection, fieldOfView, viewDistance);
        • 시야 각이 그려지는 위치인 eyeTransform.position 에서 그려지며 (Vector3 center)
        • Vector3.up 축을 기준으로 회전한 부채꼴 (Vector3 normal)
        • leftRayDirection 을 부채꼴 시작점으로 (from Vector3)
        • 오른쪽으로 fieldOfview 각도만큼 회전한 (float angle)
        • 중심으로부터 호가 그려지는 길이는, 즉 반지름이 viewDistance 인 Arc를 그린다. (float radius)

 

 

*Handles를 쓰기위해선 상단에 using UnityEditor;가 네임스페이스가 필요함

*OnDrawGizMos(){}는 씬뷰에만 보이는 이벤트 함수