static void OnPlayerMoveNotify(byte[] data) { CSPlayerMoveNotify notify = NetworkManager.Deserialize <CSPlayerMoveNotify>(data); //Debug.Log("CSPlayerMoveNotify,id=" + notify.PlayerID + ",(" + notify.Position.x + "," + notify.Position.y + "," + notify.Position.z + ")"); MovePlayer(notify.PlayerID, notify.Position, notify.Rotation); }
public static void OnHeroMoveReq(Player player, MemoryStream stream) { CSHeroMoveReq req = NetworkManager.Deserialize <CSHeroMoveReq>(stream); //Ultilities.Print($"CSHeroMoveReq,id={player.id},position=({req.Position.x},{req.Position.y},{req.Position.z}),rotation=({req.Rotation.x},{req.Rotation.y},{req.Rotation.z})"); player.position = new Vector3(req.Position.x, req.Position.y, req.Position.z); player.rotation = new Vector3(req.Rotation.x, req.Rotation.y, req.Rotation.z); //写数据库 Redis.SetPlayerData(player.id, new CSPlayer { PlayerID = player.id, Name = player.name, Position = new CSVector3 { x = player.position.x, y = player.position.y, z = player.position.z }, Rotation = new CSVector3 { x = player.rotation.x, y = player.rotation.y, z = player.rotation.z }, }); //玩家的移动同步给看得到这个chunk的其他玩家 List <Player> playersInChunk = TerrainData.GetChunkViewPlayers(player.curChunk); foreach (Player p in playersInChunk) { if (p.id != player.id) { CSPlayerMoveNotify notify = new CSPlayerMoveNotify { PlayerID = player.id, Position = req.Position, Rotation = req.Rotation }; NetworkManager.Enqueue(p.socket, ENUM_CMD.CS_PLAYER_MOVE_NOTIFY, notify); } } }