//广播 本身坐标和向量坐标 public static void BroadcastPath(this MapPathComponent self, List <Vector3> path, int index, int offset) { M2C_KeyboardPosition m2C_KeyboardPosition = new M2C_KeyboardPosition(); Unit unit = self.GetParent <Unit>(); Vector3 unitPos = unit.Position; m2C_KeyboardPosition.X = unitPos.x; m2C_KeyboardPosition.Y = unitPos.y; m2C_KeyboardPosition.Z = unitPos.z; m2C_KeyboardPosition.Id = unit.Id; for (int i = 0; i < offset; ++i) { if (index + i >= self.ABPath.Result.Count) { break; } Vector3 v = self.ABPath.Result[index + i]; m2C_KeyboardPosition.Xs.Add(v.x); m2C_KeyboardPosition.Ys.Add(v.y); m2C_KeyboardPosition.Zs.Add(v.z); } MessageHelper.Broadcast(m2C_KeyboardPosition, unit.GetComponent <AoiUnitComponent>().playerIds.MovesSet.ToArray()); Console.WriteLine(" UnitDirComponentHelper-82-MoveToClient: " + m2C_KeyboardPosition.Id + " ( " + m2C_KeyboardPosition.X + ", " + m2C_KeyboardPosition.Y + ", " + m2C_KeyboardPosition.Z + ")"); }
public async ETVoid StartMove(M2C_KeyboardPosition message) { // 取消之前的移动协程 this.CancellationTokenSource?.Cancel(); this.CancellationTokenSource = new CancellationTokenSource(); this.Path.Clear(); for (int i = 0; i < message.Xs.Count; ++i) { this.Path.Add(new Vector3(message.Xs[i], message.Ys[i], message.Zs[i])); } this.ServerPos = new Vector3(message.X, message.Y, message.Z); await StartMove(this.CancellationTokenSource.Token); this.CancellationTokenSource.Dispose(); this.CancellationTokenSource = null; }