Example #1
0
    //캐릭터 위치 -> 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);
    }