Зомби работает нормально, но это сборная создает проблему в анимации в единстве - PullRequest
0 голосов
/ 09 мая 2018

Я создаю FPS-шутер в unity.Bellow - это скрипт, который я использовал для зомби, и он отлично работает, но когда я создаю префаб этого зомби, он также работает, но он перестает делать анимацию атаки и другие вещи работают нормально Что мне теперь делать? Пожалуйста, помогите мне ..... Я использовал трех разных зомби и использовал один и тот же сценарий, все они отлично работают, но когда я создаю префаб из этих зомби, они снова создают проблему и перестают делать анимацию атаки, хотя мое здоровье ухудшается, когда они приближаются , Пожалуйста, помогите мне в этом, я не знаю, если мой код неправильный, или я сделал какую-то ошибку в настройках Unity, но это очень трудно сделать и исправить, что я должен делать, ребята, это мой последний проект проекта года, и я застрял в этой очень сложной ситуации.

using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class PlayerChaseWithoutFaceFollowing : MonoBehaviour {

        public Transform player;
       // public Transform head;
        // public Transform sword;

        static Animator anim;

        //bool pursuing = false;

        // Use this for initialization
        void Start()
        {
            anim = GetComponent<Animator>(); // assigning component
        }

        // Update is called once per frame
        void Update()
        {
            Vector3 direction = player.position - this.transform.position; //to get the direction 


           // float angle = Vector3.Angle(direction, this.transform.forward);
            // float swordmovement = Vector3.Angle(direction, head.up);
            if (anim.GetBool("Death"))
            {
                anim.SetBool("isWalking", false);
                anim.SetBool("isIdle", false);
                anim.SetBool("isAttacking", false);
            }
            else
            {
                if (Vector3.Distance(player.position, this.transform.position) < 10 )
                {
                    direction.y = 0;
                    this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f); // rotate enemy to player
                    anim.SetBool("isIdle", false); // no more idle state

                    if (direction.magnitude > 3) // start walking
                    {
                        this.transform.Translate(0, 0, 0.5f);
                        anim.SetBool("isWalking", true); //start walking animation
                        anim.SetBool("isAttacking", false);
                    }
                    else
                    {
                        anim.SetBool("isWalking", false);
                        anim.SetBool("isAttacking", true);


                    }
                }
                else
                {
                    anim.SetBool("isIdle", true);
                    anim.SetBool("isWalking", false);
                    anim.SetBool("isAttacking", false);
                    //pursuing = false;
                }

            }
            //if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
            //{
            //    AudioSource EnemyAttack = GetComponent<AudioSource>();
            //    EnemyAttack.Play();
            //}

            //if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
            //{
            //    PlayerHealthBar.value -= 2;
            //    Debug.Log("Hit");
            //    //anim.SetBool("isAttacking", false);

            //}
        }
    }

1 Ответ

0 голосов
/ 27 ноября 2018

См. Мое изображение ниже

панель аниматора-зомби

Ваш способ установки параметра может ввести в заблуждение. Попробуйте использовать int в качестве параметра перехода аниматора, вместо того, чтобы делать

anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);

вы делаете

anim.SetInt("State",0);

...