/// <summary> /// 玩家通报一次移动 /// </summary> /// <remarks> /// 我也不想要这么多参数 /// 但是unity3d的对象的参数,不是以属性的方式存在 /// 不能被协议代码生成工具识别,只好把参数拆开 /// </remarks> /// <param name="netstate">网络客户端</param> /// <param name="time">当前客户端时间</param> /// <param name="postion"></param> /// <param name="rotation"></param> /// <param name="speed"></param> /// <param name="rotationRate"></param> /// <param name="speedUpType"></param> public void OnMove(NetState netstate, DateTime time, Vector3 postion, Quaternion rotation, float speed, float rotationRate, SpeedUpTypes speedUpType) { var player = (Player)netstate.Player; if (player == null) { return; } //Console.WriteLine(postion.ToString() + direction.ToString()); // 理论上这里需要对玩家的位置做验证,这里先忽略,全部信任 //player.Postion = postion; //player.Direction = direction; // 广播给场景里的其它玩家 var onlinePlayer = WorldEntityManager.OnlinePlayers.ToArray(); foreach (var p in onlinePlayer) { if (p.Id != player.Id) { ClientProxy.Scene.SpriteMove(p.NetState, player.Id, time, postion, rotation , speed, rotationRate, speedUpType); } } }
internal override void OnSpriteMove(int spriteId, DateTime time, Vector3 postion, Quaternion rotation, float speed, float rotationRate, SpeedUpTypes speedUpType) { var sprite = m_sprites.FirstOrDefault(o => o.Id == spriteId); if (sprite == null) { Logs.Error("本地没发现精灵id{0}", spriteId); return; } sprite.Postion = postion; sprite.Rotation = rotation; sprite.Speed = speed; sprite.RotationRate = rotationRate; sprite.SpeedUpTypes = speedUpType; if (SpriteMove != null) { SpriteMove(time, sprite); } }
/// <summary> /// 玩家通报一次移动 /// </summary> /// <remarks> /// 我也不想要这么多参数 /// 但是unity3d的对象的参数,不是以属性的方式存在 /// 不能被协议代码生成工具识别,只好把参数拆开 /// </remarks> /// <param name="netstate">网络客户端</param> /// <param name="time">当前客户端时间</param> /// <param name="postion"></param> /// <param name="rotation"></param> /// <param name="speed"></param> /// <param name="rotationRate"></param> /// <param name="speedUpType"></param> public void OnMove(NetState netstate, DateTime time, Vector3 postion, Quaternion rotation, float speed, float rotationRate, SpeedUpTypes speedUpType) { var player = (Player)netstate.Player; if (player == null) return; //Console.WriteLine(postion.ToString() + direction.ToString()); // 理论上这里需要对玩家的位置做验证,这里先忽略,全部信任 //player.Postion = postion; //player.Direction = direction; // 广播给场景里的其它玩家 var onlinePlayer = WorldEntityManager.OnlinePlayers.ToArray(); foreach (var p in onlinePlayer) { if (p.Id != player.Id) { ClientProxy.Scene.SpriteMove(p.NetState, player.Id, time, postion, rotation , speed, rotationRate, speedUpType); } } }
/// <summary> /// 设置船只速度 /// </summary> /// <param name="types"></param> public void SetSpeedUpType(SpeedUpTypes types) { SpeedUpType = types; }
/// <summary> /// 获得不同帆张力下的船只加速度 /// </summary> /// <param name="types"></param> /// <returns></returns> protected float GetAcceleration(SpeedUpTypes types) { float[] speedRate = { 0f, 0.25f, 0.5f, 0.75f, 1f }; return(speedRate[(int)types] * Acceleration); }
/// <summary> /// 获得当前可以移动的最大速度 /// </summary> /// <param name="types"></param> /// <returns></returns> protected float GetCurrentMaxSpeed(SpeedUpTypes types) { float[] speedRate = { 0f, 0.25f, 0.5f, 0.75f, 1f }; return(speedRate[(int)types] * MaxMoveSpeed); }
internal override void OnSpriteMove(int spriteId, DateTime time, Vector3 postion, Quaternion rotation, float speed, float rotationRate, SpeedUpTypes speedUpType) { var sprite = m_sprites.FirstOrDefault(o => o.Id == spriteId); if (sprite == null) { Logs.Error("本地没发现精灵id{0}", spriteId); return; } sprite.Postion = postion; sprite.Rotation = rotation; sprite.Speed = speed; sprite.RotationRate = rotationRate; sprite.SpeedUpTypes = speedUpType; if (SpriteMove != null) SpriteMove(time, sprite); }
/// <summary> /// 获得当前可以移动的最大速度 /// </summary> /// <param name="types"></param> /// <returns></returns> protected float GetCurrentMaxSpeed(SpeedUpTypes types) { float[] speedRate = { 0f, 0.25f, 0.5f, 0.75f, 1f }; return speedRate[(int)types] * MaxMoveSpeed; }
/// <summary> /// 获得不同帆张力下的船只加速度 /// </summary> /// <param name="types"></param> /// <returns></returns> protected float GetAcceleration(SpeedUpTypes types) { float[] speedRate = { 0f, 0.25f, 0.5f, 0.75f, 1f }; return speedRate[(int)types] * Acceleration; }