Unity2D Как заставить Ай бегать в случайных направлениях - PullRequest
0 голосов
/ 23 сентября 2018

В YouTube есть какое-то учебное пособие, но я думаю, что это неправильно, почему?да, аи бегут в случайных направлениях, но анимация - нет.даже ай движется на холостом ходу.Есть ли у кого-нибудь исходный код или идея, чтобы заставить его работать так, как должно быть?Пожалуйста, помогите мне, я застрял в этой вещи на неделю.перепробовал все, что мог, но все не получилось, пожалуйста, помогите мне, я вас умоляю.У меня есть только еще один день, чтобы закончить основную игру, которую я создаю для нашего школьного промежуточного экзамена.я не хочу потерпеть неудачу T_T

    public float moveSpeed;
    private Rigidbody2D myRigidbody;

    public bool isWalking;

    public float walkTime;
    private float walkCounter;
    public float waitTime;
    private float waitCounter;
    private int walkDirection;


    public Animator animator;

    void Start()
    {

         animator = GetComponent<Animator>();
         animator.SetBool("IsRunning", true);

        myRigidbody = GetComponent<Rigidbody2D>();
        waitCounter = waitTime;
        walkCounter = walkTime;
        ChooseDirection();

    }

    void Update()
    {
        animator.SetBool("IsRunning", isWalking);
        if (isWalking)
        {
            walkCounter -= Time.deltaTime;

            switch (walkDirection)
            {
                case 0:
                    myRigidbody.velocity = new Vector2(0, moveSpeed);
                    break;
                case 1:
                    myRigidbody.velocity = new Vector2(moveSpeed, 0);
                    break;
                case 2:
                    myRigidbody.velocity = new Vector2(0, -moveSpeed);
                    break;
                case 3:
                    myRigidbody.velocity = new Vector2(-moveSpeed, 0);
                    break;
            }
            if (walkCounter < 0)
            {
                isWalking = false;
                waitCounter = waitTime;
            }
        }
        else
        {
            waitCounter -= Time.deltaTime;
            myRigidbody.velocity = Vector2.zero;
            if (waitCounter < 0)
            {
                ChooseDirection();
            }
        }
    }
    public void ChooseDirection()
    {

        walkDirection = Random.Range(0, 4);
        isWalking = true;
        walkCounter = walkTime;
    }
}

1 Ответ

0 голосов
/ 24 сентября 2018

получить ссылку аниматора при запуске

public Animator animator;
void Start()
{
     //Assuming that the Animator is attached to the same Game Object as this script
     animator = GetComponent<Animator>();
}

, создать параметр (в данном случае bool с именем "IsRunning") и установить его при запуске run

animator.SetBool("IsRunning", true);

в вашем случае вы, вероятно, захотите обновить состояние при изменении переменной isWalking, поэтому при обновлении

animator.SetBool("IsRunning", isWalking);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...