부채꼴 충돌
간단히 보채골 충돌에 대한 판단을 하는 코드이다.
벡터의 지름을 계산해서 판단한다.
public class CirSector : MonoBehaviour
{
public Transform m_Target;
public float m_fAngle = 45f;
public float m_fDistance = 10f;
public bool m_bCollision = false;
Vector3 direction;
float dotValue = 0f;
void Update ()
{
dotValue = Mathf.Cos(Mathf.Deg2Rad * (this.m_fAngle / 2));
direction = this.m_Target.position - transform.position;
if (direction.magnitude < this.m_fDistance)
{
if (Vector3.Dot(direction.normalized, transform.forward) > dotValue)
this.m_bCollision = true;
else
this.m_bCollision = false;
}
else
this.m_bCollision = false;
}
private void OnDrawGizmos()
{
Handles.color = this.m_bCollision ? Color.red : Color.blue;
Handles.DrawSolidArc(transform.position, Vector3.up, transform.forward, (this.m_fAngle/2), this.m_fDistance);
Handles.DrawSolidArc(transform.position, Vector3.up, transform.forward, -(this.m_fAngle/2), this.m_fDistance);
}
}
반응형
★☆☆☆☆
반응형
'개발 > 코드' 카테고리의 다른 글
코드) 원 운동 (0) | 2020.03.03 |
---|---|
코드) Debug Circle (0) | 2020.02.28 |
코드) 리스트 랜덤 (0) | 2020.02.28 |
코드) 두 점 사이의 각도 계산 (0) | 2019.11.08 |
코드) 두 점 사이의 거리 (0) | 2019.11.08 |
댓글