public static async ETVoid MoveTo(this UnitPathComponent self, Vector3 target) { if ((self.Target - target).magnitude < 0.1f) { return; } self.Target = target; Unit unit = self.GetParent <Unit>(); }
// 从index找接下来3个点,广播 public static void BroadcastPath(this UnitPathComponent self, List <Vector3> path, int index, int offset) { Unit unit = self.GetParent <Unit>(); Vector3 unitPos = unit.Position; M2C_PathfindingResult m2CPathfindingResult = new M2C_PathfindingResult(); m2CPathfindingResult.X = unitPos.x; m2CPathfindingResult.Y = unitPos.y; m2CPathfindingResult.Z = unitPos.z; m2CPathfindingResult.Id = unit.Id; MessageHelper.Broadcast(unit, m2CPathfindingResult); }
public static async ETTask MoveAsync(this UnitPathComponent self, List <Vector3> path) { if (path.Count == 0) { return; } // 第一个点是unit的当前位置,所以不用发送 for (int i = 1; i < path.Count; ++i) { // 每移动3个点发送下3个点给客户端 if (i % 3 == 1) { self.BroadcastPath(path, i, 3); } Vector3 v3 = path[i]; //await self.Parent.GetComponent<MoveComponent>().MoveToAsync(v3, self.CancellationToken); } }