using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class MoveAction : ActionNode { public AI_Worker _Worker; private Vector3 Dir; private Vector3 lookDir; private float speed = 5; //向前和向后走的距离 public override IEnumerator Execute() { if (_Worker.animator.GetCurrentAnimatorStateInfo(0).IsName("Walk") == false) { _Worker.animator.CrossFade("Walk", 0f); } Dir = _Worker.targerPos - _Worker.transform.position; lookDir.x = _Worker.movePoints[_Worker.PointIdenx].position.x; lookDir.y = _Worker.transform.position.y; lookDir.z = _Worker.movePoints[_Worker.PointIdenx].position.z; //_Worker.transform.position += Dir.normalized * speed * Time.deltaTime; _Worker.transform.LookAt(lookDir); _Worker.GetComponent().SetDestination(_Worker.targerPos); // _Worker.GetComponent().velocity= Dir.normalized * speed * Time.deltaTime; if (Vector3.Distance(_Worker.transform.position, _Worker.targerPos) <= 0.4f) { _Worker.isWorkOver = false; yield break; } yield return base.Execute(); } }