static void Single_OnHeroMoveReq(object obj, Action <object> callback) { CSHeroMoveReq req = obj as CSHeroMoveReq; //Debug.Log("Single_OnHeroMoveReq,req=" + req.Position.x + "," + req.Position.y + "," + req.Position.z); playerData.Position = req.Position; playerData.Rotation = req.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); } } }
void Update() { DrawWireFrame(); if (acceptInput) { RotateView(); if (Input.GetMouseButtonDown(0)) { handAnimator.SetTrigger("interactTrigger"); if (WireFrameHelper.render) { if (WireFrameHelper.pos.y != 0) { DeleteBlockReq(WireFrameHelper.pos); } } } if (Input.GetMouseButtonDown(1)) { if (WireFrameHelper.render && ItemSelectPanel.curBlockType != CSBlockType.None) { Vector3Int pos = WireFrameHelper.pos; if (ChunkManager.HasCollidableBlock(WireFrameHelper.pos.x, WireFrameHelper.pos.y, WireFrameHelper.pos.z)) { pos = WireFrameHelper.pos + Vector3Int.RoundToInt(hit.normal); } if (!cc.bounds.Intersects(new Bounds(pos, Vector3.one)) && !ChunkManager.HasNotPlantBlock(pos)) { if (ItemSelectPanel.curBlockType == CSBlockType.Torch) { AddBlockReq(Vector3Int.RoundToInt(pos), ItemSelectPanel.curBlockType, WireFrameHelper.pos); } else { CSBlockOrientation orientation = ChunkMeshGenerator.GetBlockOrientation(transform.position, pos, WireFrameHelper.hitPos); AddBlockReq(Vector3Int.RoundToInt(pos), ItemSelectPanel.curBlockType, orientation); } } } } if (Input.GetKeyDown(KeyCode.Space)) { Jump(); } if (Input.GetKeyDown(KeyCode.Q)) { ItemSelectPanel.DropCurItem(); } } if (needUpdate && Time.realtimeSinceStartup - lastUpdateTime > timeInterval) { needUpdate = false; lastUpdateTime = Time.realtimeSinceStartup; CSHeroMoveReq req = new CSHeroMoveReq { Position = new CSVector3 { x = transform.position.x, y = transform.position.y, z = transform.position.z }, Rotation = new CSVector3 { x = 0, y = transform.localEulerAngles.y, z = camera.transform.localEulerAngles.x } }; NetworkManager.SendPkgToServer(ENUM_CMD.CS_HERO_MOVE_REQ, req); } }
void Update() { DrawWireFrame(); PositionCorrection(); if (acceptInput) { RotateView(); if (Input.GetKeyDown(KeyCode.Mouse0)) { OnLeftMouseDown(); } if (Input.GetKeyUp(KeyCode.Mouse0)) { OnLeftMouseUp(); } if (Input.GetKeyDown(KeyCode.Mouse1)) { OnRightClick(); } if (Input.GetKeyDown(KeyCode.Space)) { Jump(); } if (Input.GetKeyDown(KeyCode.Q)) { uint slot = ItemSelectPanel.curIndex; InventoryItem item = InventorySystem.items[ItemSelectPanel.curIndex]; if (item.id != null) { NBTObject generator = NBTGeneratorManager.GetObjectGenerator(item.id); if (generator != null) { short data = InventorySystem.items[slot].damage; Item.CreatePlayerDropItem(generator, (byte)data); InventorySystem.DecrementCurrent(); ItemSelectPanel.instance.RefreshUI(); } } } } if (Input.GetKeyDown(KeyCode.F2)) { Utilities.Capture(); } if (needUpdate && Time.realtimeSinceStartup - lastUpdateTime > timeInterval) { needUpdate = false; lastUpdateTime = Time.realtimeSinceStartup; CSHeroMoveReq req = new CSHeroMoveReq { Position = new CSVector3 { x = transform.position.x, y = transform.position.y, z = transform.position.z }, Rotation = new CSVector3 { x = 0, y = transform.localEulerAngles.y, z = camera.transform.localEulerAngles.x } }; NetworkManager.SendPkgToServer(ENUM_CMD.CS_HERO_MOVE_REQ, req); } }