示例#1
0
    public List <Collider2D> GetTargetsCollider2D(Act act = null)
    {
        visibleTargets.Clear();
        Collider2D[]      targetsInViewRadius = Physics2D.OverlapCircleAll(transform.position, viewRadius, LayerMaskUtill.Composit(targetMask));
        List <Collider2D> targetCollider      = new List <Collider2D>();

        Debug.Log("루틴 테스트" + targetsInViewRadius.Length);
        for (int i = 0; i < targetsInViewRadius.Length; i++)
        {
            Transform target      = targetsInViewRadius[i].transform;
            Vector3   dirToTarget = (target.position - transform.position).normalized;// 방향 설정
            if (Vector3.Angle(transform.up, dirToTarget) < viewAngle / 2)
            {
                float dstToTarget = Vector3.Distance(transform.position, target.position);

                if (!Physics.Raycast(transform.position, dirToTarget, dstToTarget, LayerMaskUtill.Composit(obstacleMask)))
                {
                    targetCollider.Add(targetsInViewRadius[i]);
                    act(targetsInViewRadius[i]);
                }
            }
        }

        return(targetCollider);
    }
示例#2
0
    /// <summary>
    /// 각도를 무시하고 전체 타겟을 불러옵니다.
    /// </summary>
    /// <returns></returns>
    public Collider2D[] GetAllTargets()
    {
        Collider2D[] targetsInViewRadius = Physics2D.OverlapCircleAll(transform.position, viewRadius, LayerMaskUtill.Composit(targetMask));



        return(targetsInViewRadius);
    }
示例#3
0
 protected Collider2D GetTarget(Transform transform, string layer = "Monster")
 {
     return(Physics2D.OverlapBox(transform.position, new Vector2(1, 1), 360, LayerMaskUtill.Single(layer)));
 }
示例#4
0
    public Collider2D GetTarget(Act callback = null)
    {
        Collider2D targetsInViewRadius = Physics2D.OverlapCircle(transform.position, viewRadius, LayerMaskUtill.Composit(targetMask));

        if (callback != null)
        {
            callback(targetsInViewRadius);
        }


        return(targetsInViewRadius);
    }
示例#5
0
 protected Collider2D[] GetTargets(Transform transform, Vector2 range, string layer = "Monster")
 {
     return(Physics2D.OverlapBoxAll(transform.position, range, 360, LayerMaskUtill.Single(layer)));
 }