//캐릭터 위치 -> Client public IEnumerator CharacterPositionSend() { if (characterManager == null) { characterManager = GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterManager>(); } Debug.Log("캐릭터 위치 보내기 시작"); while (true) { yield return(new WaitForSeconds(0.016f)); bool dir = characterManager.charDir; float xPos = characterManager.transform.position.x; float yPos = characterManager.transform.position.y; float zPos = characterManager.transform.position.z; CharacterPositionData CharacterPosition = new CharacterPositionData(dir, (byte)characterManager.UserNum, xPos, yPos, zPos); CharacterPositionPacket characterPositionPacket = new CharacterPositionPacket(CharacterPosition); characterPositionPacket.SetPacketId((int)P2PPacketId.CharacterPosition); byte[] msg = CreatePacket(characterPositionPacket); for (int index = 0; index < networkManager.UserIndex.Count; index++) { int userIndex = networkManager.UserIndex[index].UserNum; if (networkManager.MyIndex != userIndex) { DataPacket packet = new DataPacket(CreateUdpPacket(characterPositionPacket, udpId[userIndex]), networkManager.UserIndex[index].EndPoint); sendMsgs.Enqueue(packet); } } } }
//Client public void CharacterPosition(DataPacket packet, int udpId) { CharacterPositionPacket characterPositionPacket = new CharacterPositionPacket(packet.msg); CharacterPositionData characterPositionData = characterPositionPacket.GetData(); CharacterManager characterManager = dungeonManager.characters[characterPositionData.userIndex]; characterManager.SetPosition(characterPositionData); }