示例#1
0
        void Update()
        {
            if (target == null)
            {
                target = Defult;
            }

            Retarget();


            if (run == true && wander == false)
            {
                if (My_Energy.Amount >= 20)
                {
                    RaycastHit forwardhit;
                    float      setY = gameObject.transform.position.y;

                    if (Physics.Raycast(transform.position, transform.forward, out forwardhit, 50, 1, QueryTriggerInteraction.Ignore))
                    {
                        if (hitForward.transform != transform)
                        {
                            Debug.DrawLine(transform.position, hitForward.point, Color.blue);
                            if (!hitForward.collider.bounds.Contains((hitForward.point + gameObject.transform.forward * 50)))
                            {
                                Defult.transform.position     = hitForward.point + gameObject.transform.forward * 50;
                                gameObject.transform.position = new Vector3(gameObject.transform.position.x, 1, gameObject.transform.position.z);
                                gameObject.transform.position = Defult.transform.position;
                            }
                            else
                            {
                                Defult.transform.position = hitForward.point;
                                if (bounding.bounds.Contains(Defult.transform.position))
                                {
                                    gameObject.transform.position = Defult.transform.position;
                                }
                                else
                                {
                                    Defult.transform.position     = new Vector3(bounding.bounds.center.x, 1, bounding.bounds.center.z);
                                    gameObject.transform.position = new Vector3(bounding.bounds.center.x, 1, bounding.bounds.center.z);
                                }
                            }
                        }
                    }
                    else
                    {
                        gameObject.transform.position = gameObject.transform.position + gameObject.transform.forward * 50;
                        gameObject.transform.position = new Vector3(gameObject.transform.position.x, 1, gameObject.transform.position.z);
                        if (bounding.bounds.Contains(Defult.transform.position))
                        {
                            gameObject.transform.position = Defult.transform.position;
                        }
                        else
                        {
                            Defult.transform.position     = new Vector3(bounding.bounds.center.x, 1, bounding.bounds.center.z);
                            gameObject.transform.position = new Vector3(bounding.bounds.center.x, 1, bounding.bounds.center.z);
                        }
                    }
                    My_Energy.Change(-20);
                    My_Body.Ability2();
                }
            }
            else if (attack == true)
            {
                if (target != Defult)
                {
                    if (My_Energy.Amount >= 5)
                    {
                        if (AttackTimmer >= 1)
                        {
                            My_Body.Ability1();
                            target.GetComponent <Health>().Change(damage, target);
                            My_Energy.Change(-5);
                            AttackTimmer = 0;
                        }
                        else
                        {
                            AttackTimmer = AttackTimmer + Time.deltaTime;
                        }
                    }
                }
                else
                {
                    attack = false;
                }
            }
        }