//캐릭터 위치 -> 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); } } } }
public bool Deserialize(ref CharacterPositionData element) { if (GetDataSize() == 0) { // 데이터가 설정되지 않았다. return(false); } bool ret = true; bool dir = true; byte userIndex = 0; float posX = 0; float posY = 0; float posZ = 0; ret &= Deserialize(ref dir); ret &= Deserialize(ref userIndex); ret &= Deserialize(ref posX); ret &= Deserialize(ref posY); ret &= Deserialize(ref posZ); element.dir = dir; element.userIndex = userIndex; element.posX = posX; element.posY = posY; element.posZ = posZ; return(ret); }
//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); }
public bool Serialize(CharacterPositionData data) { bool ret = true; ret &= Serialize(data.dir); ret &= Serialize(data.userIndex); ret &= Serialize(data.posX); ret &= Serialize(data.posY); ret &= Serialize(data.posZ); return(ret); }
public void SetPosition(CharacterPositionData newPositionData) { Debug.Log("캐릭터 위치 설정 유저 번호 : " + userNum); if (newPositionData.dir) { transform.rotation = Quaternion.Euler(new Vector3(0, 0.0f, 0)); charDir = true; } else { transform.rotation = Quaternion.Euler(new Vector3(0, 180.0f, 0)); charDir = false; } transform.position = new Vector3(newPositionData.posX, newPositionData.posY, newPositionData.posZ); }