宠物的自动跟随和在固定范围内攻击脱离范围后回到主角身边。

来源:互联网 发布:淘宝后台 编辑:程序博客网 时间:2024/04/30 14:06
欢迎来到U3D社区:
 
  今天我主要写了宠物的自动跟随和在固定范围内攻击脱离范围后回到主角身边。
  
      public  GameObject hero; //定义一个宠物要跟随的人物

      private GameObject enemy;//定义一个怪物

      public  GameObject pet ;//定义一个宠物

     private NavMeshAgent agent; //自动寻径的组件

    bool flag = true;//没遇到的时候;

    bool flag1 = true;//宠物攻击
  
void Start () {

agent = GetComponent<NavMeshAgent>(); //添加组件

        hero = GameObject.Find("Hero");   //寻找人物的名称

        enemy = GameObject.FindGameObjectWithTag("Enemy");  //寻找怪物标签

}

       void Update()

{

       if (hero != null)

{

       if (flag)

{

       if (Vector3.Distance(transform.position, hero.transform.position) > 3f)//当宠物的距离和主角的距离大于三的时候

 {

       transform.LookAt(hero.transform.position);//旋转注视
 
      agent.destination = hero.transform.position + new Vector3(0, 0, -1);//追击人物做行走动画

       AnimationToWalk();

}

}

      if (flag1)

{

      if (Vector3.Distance(transform.position, enemy.transform.position) <= 1f)//当宠物的距离和怪物的距离小于等于1
{

      agent.destination = transform.position;

       flag = false;

      AnimationToAttack();//攻击

}

      if (Vector3.Distance(transform.position, enemy.transform.position) > 1f && Vector3.Distance(transform.position, 
enemy.transform.position)<=5f)

{

     agent.destination = enemy.transform.position;

      flag = false;

      AnimationToWalk();

}

      if (Vector3.Distance(transform.position, enemy.transform.position) > 5f)

{

      transform.LookAt(hero.transform.position);

      agent.destination = hero.transform.position + new Vector3(0, 0, -1);

       AnimationToWalk();

}

}

      if (Input.GetKeyDown(KeyCode.Z))

{

                flag1 = false;

                flag = true;

                print("宠物跟随");

}

    if (Input.GetKeyDown(KeyCode.X))

{

                flag1 = true;

                flag = false;

                print("宠物攻击");

            }

        }

    }

    

    //站立不动

    public void AnimationToIdle()

    {

        pet.transform.animation.Play("idle");

    }

    //行走

    public void AnimationToWalk()

    {

        pet.transform.animation.Play("walk");

    }

    //攻击

    public void AnimationToAttack()

    {

        pet.transform.animation.Play("attack1");

    }

    //死亡

    public void AnimationToDie()

    {

        pet.transform.animation.Play("death1");

    }
更多精彩在http://unity.gopedu.com/forum.php
0 0