//유닛 위치 -> Client public IEnumerator UnitPositionSend(GameObject unit) { Debug.Log("몬스터 위치 보내기 시작"); Monster monster = unit.GetComponent <Monster>(); while (true) { yield return(new WaitForSeconds(0.016f)); bool dir = monster.Direction; float xPos = monster.transform.position.x; float yPos = monster.transform.position.y; float zPos = monster.transform.position.z; UnitPositionData unitPositionData = new UnitPositionData((byte)UnitType.Monster, dir, xPos, yPos, zPos, (byte)monster.MonsterIndex); UnitPositionPacket unitPositionPacket = new UnitPositionPacket(unitPositionData); unitPositionPacket.SetPacketId((int)P2PPacketId.UnitPosition); byte[] msg = CreatePacket(unitPositionPacket); for (int index = 0; index < NetworkManager.Instance.UserIndex.Count; index++) { Debug.Log(index + ", " + NetworkManager.Instance.MyIndex); if (NetworkManager.Instance.MyIndex != index) { Debug.Log("몬스터 위치 보냄"); DataPacket packet = new DataPacket(msg, NetworkManager.Instance.UserIndex[index].EndPoint); sendMsgs.Enqueue(packet); } } } }
//캐릭터 위치 -> Client public IEnumerator CharacterPositionSend(GameObject unit) { CharacterManager characterManager = unit.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; UnitPositionData unitPositionData = new UnitPositionData((byte)UnitType.Hero, dir, xPos, yPos, zPos, (byte)characterManager.UserNum); UnitPositionPacket unitPositionPacket = new UnitPositionPacket(unitPositionData); unitPositionPacket.SetPacketId((int)P2PPacketId.UnitPosition); byte[] msg = CreatePacket(unitPositionPacket); for (int index = 0; index < networkManager.UserIndex.Count; index++) { int userIndex = networkManager.UserIndex[index].UserNum; if (networkManager.MyIndex != userIndex) { DataPacket packet = new DataPacket(CreateUdpPacket(unitPositionPacket, udpId[userIndex]), networkManager.UserIndex[index].EndPoint); sendMsgs.Enqueue(packet); } } } }
//캐릭터 위치 -> Client public IEnumerator CharacterPositionSend() { Debug.Log("캐릭터 위치 보내기 시작"); CharacterManager characterManager = GameObject.FindWithTag("Player").GetComponent <CharacterManager>(); while (true) { bool dir = characterManager.charDir; float xPos = characterManager.transform.position.x; float yPos = characterManager.transform.position.y; float zPos = characterManager.transform.position.z; UnitPositionData unitPositionData = new UnitPositionData((byte)UnitType.Hero, dir, xPos, yPos, zPos, (byte)NetworkManager.Instance.MyIndex); UnitPositionPacket unitPositionPacket = new UnitPositionPacket(unitPositionData); unitPositionPacket.SetPacketId((int)P2PPacketId.UnitPosition); for (int index = 0; index < NetworkManager.Instance.UserIndex.Count; index++) { if (NetworkManager.Instance.MyIndex != index) { DataPacket packet = new DataPacket(CreateUdpPacket(unitPositionPacket, udpId[index]), NetworkManager.Instance.UserIndex[index].EndPoint); sendMsgs.Enqueue(packet); } } yield return(new WaitForSeconds(0.016f)); } }
//Client - 유닛 위치 public void UnitPosition(DataPacket packet, int udpId) { UnitPositionPacket unitPositionPacket = new UnitPositionPacket(packet.msg); UnitPositionData unitPositionData = unitPositionPacket.GetData(); if (unitPositionData.UnitType == (byte)UnitType.Hero) { dungeonManager.SetCharacterPosition(unitPositionData); } else if (unitPositionData.UnitType == (byte)UnitType.Monster) { dungeonManager.SetMonsterPosition(unitPositionData); } }