学习Unity3D之攻击恢复。

来源:互联网 发布:mac滴管粉底液怎么样 编辑:程序博客网 时间:2024/05/17 03:43

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

      

       前几天我写了自动寻径,今天结合自动寻径和模型上的静止(idle)、走(walk)、攻击(attack),做到让模型走到另一个模型身边攻击他,另一个模型消失,然后模型停止攻击动作恢复静止。


       附在模型上的代码:


       public float timer = 1f;
       public static int lifetime = 1;
       private NavMeshAgent agent;
       public Transform hero;
       bool flag = false;
       void Start()
       {
           agent = GetComponent<NavMeshAgent>();
       }
       void Update () {
           RaycastHit hit;
           if (Input.GetMouseButtonDown(0)) {
               Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
               if(Physics.Raycast(ray,out hit)){
                   agent.SetDestination(hit.point);
               }
           }
           if (flag)
           {
               timer -= Time.deltaTime;
               if (timer <= 0)
               {
                   flag = false;
                   timer = 1f;
               }
               AnimationToAttack();
           }
           else
           {
               if (agent.remainingDistance == 0)
               {
                   AnimationToIdle();
               }
               else
               {
                   AnimationToWalk();
               }
           }
       }
       public void AnimationToIdle() {
           hero.transform.animation.Play("idle");
       }
       public void AnimationToWalk() {
           hero.transform.animation.Play("walk");
       }
       public void AnimationToAttack() {
           hero.transform.animation.Play("idle to working");
       }
       void OnTriggerEnter(Collider a)
       {
           if (a.CompareTag("life"))
           {
               flag = true;
           }
       }


       附在武器上的代码:


       public float enemylife = 2;
       void OnTriggerEnter(Collider a){
           if (a.CompareTag("life")) {
               enemylife--;
               if (enemylife == 0) {
                   Destroy(a.gameObject);
                   enemylife = 2;
                   move.lifetime++;
               }
           }
       }

0 0