コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        DeerAI.findClosestPlayer();
        target = DeerAI.VisionConePlayer;
        Vector3 targetDir = target.position - transform.position;
        Vector3 forward   = transform.forward;
        float   angle     = Vector3.Angle(targetDir, forward);

        //Debug.Log(angle);
        if (angle < 80.0f)
        {
            float dist = Vector3.Distance(target.position, transform.position);
            if (dist < DeerAI.DeerMaxVision)
            {
                //Debug.Log("In angle!");
                RaycastHit hit;

                if (Physics.Raycast(transform.position, (target.position - transform.position), out hit, DeerAI.DeerMaxVision))
                {
                    Debug.DrawRay(transform.position, (target.position - transform.position), Color.green, 8);
                    //Debug.Log(hit.collider.name);
                    if (hit.collider.tag == "Player")
                    {
                        if (DeerAI.PlayerChecked == false)
                        {
                            DeerAI.currentState = Deer_AI.AIStates.Running;
                            DeerAI.player       = target;

                            DeerAI.PlayerChecked = true;
                        }
                        //Debug.Log(GettingCurrentStat.currentState);

                        //Debug.Log("I see you!!");
                    }
                }
            }
        }
    }