You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.5 KiB
72 lines
2.5 KiB
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
namespace ET |
|
{ |
|
public static class MoveHelper |
|
{ |
|
// 可以多次调用,多次调用的话会取消上一次的协程 |
|
public static async ETTask FindPathMoveToAsync(this Unit unit, Vector3 target, ETCancellationToken cancellationToken = null) |
|
{ |
|
// float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed); |
|
// if (speed < 0.01) |
|
// { |
|
// unit.SendStop(-1); |
|
// return; |
|
// } |
|
// |
|
// using var list = ListComponent<Vector3>.Create(); |
|
// |
|
// unit.GetComponent<PathfindingComponent>().Find(unit.Position, target, list); |
|
// |
|
// List<Vector3> path = list; |
|
// if (path.Count < 2) |
|
// { |
|
// unit.SendStop(0); |
|
// return; |
|
// } |
|
// |
|
// // 广播寻路路径 |
|
// M2C_PathfindingResult m2CPathfindingResult = new M2C_PathfindingResult(); |
|
// m2CPathfindingResult.Id = unit.Id; |
|
// for (int i = 0; i < list.Count; ++i) |
|
// { |
|
// Vector3 vector3 = list[i]; |
|
// m2CPathfindingResult.Xs.Add(vector3.x); |
|
// m2CPathfindingResult.Ys.Add(vector3.y); |
|
// m2CPathfindingResult.Zs.Add(vector3.z); |
|
// } |
|
// MessageHelper.Broadcast(unit, m2CPathfindingResult); |
|
// |
|
// bool ret = await unit.GetComponent<MoveComponent>().MoveToAsync(path, speed); |
|
// if (ret) // 如果返回false,说明被其它移动取消了,这时候不需要通知客户端stop |
|
// { |
|
// unit.SendStop(0); |
|
// } |
|
await ETTask.CompletedTask; |
|
} |
|
|
|
public static void Stop(this Unit unit, int error) |
|
{ |
|
// unit.GetComponent<MoveComponent>().Stop(); |
|
// unit.SendStop(error); |
|
} |
|
|
|
public static void SendStop(this Unit unit, int error) |
|
{ |
|
// MessageHelper.Broadcast(unit, new M2C_Stop() |
|
// { |
|
// Error = error, |
|
// Id = unit.Id, |
|
// X = unit.Position.x, |
|
// Y = unit.Position.y, |
|
// Z = unit.Position.z, |
|
// |
|
// A = unit.Rotation.x, |
|
// B = unit.Rotation.y, |
|
// C = unit.Rotation.z, |
|
// W = unit.Rotation.w, |
|
// }); |
|
} |
|
} |
|
} |