public static BehaviourTimeCallback PathTo(this Transform trans, float duration, List <Vector3> waypoints, NavPathType pathType = NavPathType.LinePosLineDir, int subdivisions = 5) { FixedPathController pathCtrl = new FixedPathController(); AbstractNavPath navPath = NavPathUtils.Create(pathType, Vector3.zero, false, null, waypoints, subdivisions); pathCtrl.StartMove(navPath, navPath.PathLength / duration, Vector3.zero, false); pathCtrl.mCtlPosition = trans; pathCtrl.mCtlRotate = trans; Callback <FixedPathController, BehaviourTimeCallback> callback = new Callback <FixedPathController, BehaviourTimeCallback>(); callback.Arg1 = pathCtrl; callback.Handler = (Action <FixedPathController, BehaviourTimeCallback>)PathTo; BehaviourTimeCallback beh = new BehaviourTimeCallback(callback); callback.Arg2 = beh; return(beh); }
public void StartMove() { // 初始化数据 string pointsStr = "-40.8,0.0;0.0,-13.0;20.26,-0.24;0.0,13.0;-20.56,-0.49;30.46,14.27;-24.65,-14.44;-25.59,16.77;40.00,-15.00"; List <Vector3> wayPoints = new List <Vector3>(); NavPathUtils.ParseVector3Array(pointsStr, ref wayPoints); AbstractNavPath navPath = NavPathUtils.Create(PathType, Offset, FlipOn, this, wayPoints, Subdivisions); PathCtl.StartMove(navPath, 20, Vector3.zero, false); PathCtl.EnableMove(true); Callback <int> testCallback = ObjectPools.Instance.Acquire <Callback <int> >(); testCallback.Handler = (Action <int>)TriggerCallback; testCallback.Arg1 = 20; PathCtl.RegisterTrigger(4.0f, testCallback); }