Esempio n. 1
0
    void Update()
    {
        if (GrannyVisible)
        {
            fov.viewRadius = 100;
        }
        else
        {
            fov.viewRadius = defaultRange;
        }


        //check visibility
        if (Time.time - LastVisionCheck > VisionCheckInterval)
        {
            GrannyVisible   = false;
            LastVisionCheck = Time.time;

            Collider2D[] hits = Physics2D.OverlapCircleAll((Vector2)this.transform.position, fov.viewRadius);

            foreach (Collider2D hit in hits)
            {
                int mask = LayerMask.GetMask("Walls", "Interactables");
                Debug.Log(mask);
                RaycastHit2D directLine = Physics2D.Raycast(this.transform.position, hit.transform.position - this.transform.position, fov.viewRadius,
                                                            mask);
                if (directLine.collider == null)
                {
                    continue;
                }
                if (directLine.transform.gameObject.GetComponent <GrandmaController>() != null)
                {
                    Vector2 guardToPlayer = (Vector2)(hit.transform.position - this.transform.position);

                    float guardToPlayerAngle = Vector2.SignedAngle(guardToPlayer, Vector2.right);

                    float guardAngle = this.transform.rotation.eulerAngles.z;

                    if (Math.Abs(FOVDraw.AngleDifference(guardAngle, guardToPlayerAngle)) <= fov.viewAngle / 2 && guardToPlayer.magnitude < fov.viewRadius)
                    {
                        GrannyVisible = true;
                    }
                }
                //other detectable objects go here
            }
        }
    }
Esempio n. 2
0
 // Use this for initialization
 void Start()
 {
     fov          = GetComponent <FOVDraw>();
     defaultRange = fov.viewRadius;
 }