关于#unity#怪兽到监测距离时怪兽只有走路动作没有走路的移动的问题,如何解决?

unity 怪兽到监测距离时怪兽只有走路动作没有走路的移动


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

public class GuaiWu : MonoBehaviour
{
    public enum EnemyState
    {
        idle,
        run,
        attack,
        death,
    }
    public EnemyState CurrentState = EnemyState.idle;
    Animator imator;
    UnityEngine.AI.NavMeshAgent agent;
    Transform Player;
    // Start is called before the first frame update
    void Start()
    {
        imator = GetComponent();
        agent = GetComponent();
        Player = GameObject.FindWithTag("Wolf").transform;
    }

    // Update is called once per frame
    void Update()
    {
        float distance = Vector3.Distance(Player.position, transform.position);
        switch (CurrentState)
        {
            case EnemyState.idle:
                if (distance > 2 && distance <= 10)
                {
                    CurrentState = EnemyState.run;
                }
                if (distance < 2)
                {
                    CurrentState = EnemyState.attack;
                }
                imator.Play("Idle");
                agent.isStopped = true;
                break;
            case EnemyState.run:
                if (distance > 10)
                {
                    CurrentState = EnemyState.idle;
                }
                if (distance < 6)
                {
                    CurrentState = EnemyState.attack;
                }
                imator.Play("Run");
                agent.isStopped = false;
                agent.SetDestination(Player.position);
                break;
            case EnemyState.attack:
                if (distance > 2)
                {
                    CurrentState = EnemyState.idle;
                }
                if (distance < 1)
                {
                    CurrentState = EnemyState.attack;
                }
                imator.Play("Attack");
                agent.isStopped = false;
                agent.SetDestination(Player.position);
                break;

        }
    }
}

agent.SetDestination(Player.position); 这个设置目标地点后会隔几帧才开始寻路,然后你一直在update设置这个点 会导致每帧都重新开始计算路径,然后等待

问题确实是如楼上大佬说的那样,看下你学习的教程Player.position这个值是在哪里更新的吧。

img


问题就是楼上大佬说的那样