示例#1
0
    //캐릭터의 애니메이션, 방향, 위치를 보내주는 메소드
    public IEnumerator CharacterDataSend()
    {
        yield return(new WaitForSeconds(1.0f));

        while (true)
        {
            yield return(new WaitForEndOfFrame());

            byte  state      = (byte)characterManager.State;
            float vertical   = characterManager.Animator.GetFloat("Ver");
            float horizontal = characterManager.Animator.GetFloat("Hor");
            bool  direction  = characterManager.Animator.GetBool("Direction");
            float xPos       = characterManager.transform.position.x;
            float yPos       = characterManager.transform.position.y;
            float zPos       = characterManager.transform.position.z;

            CharacterStateData       characterStateData       = new CharacterStateData(state, direction, horizontal, vertical, xPos, yPos, zPos);
            CharacterStateDataPacket characterStateDataPacket = new CharacterStateDataPacket(characterStateData);

            //현재는 client로 고정되있지만
            //차후 수정으로 매개변수 newIPEndPoint를 설정하여 여러명의 클라이언트에 동시에 보내도록 수정할 예정
            DataPacket packet = CreatePacket(characterStateDataPacket.GetPacketData(), P2PPacketId.CharacterState);
            packet.endPoint = NetworkManager.client1;
            sendMsgs.Enqueue(packet);
        }
    }
    //원래는 보낸 IP를 체크해서 몇번째 플레이어인지 확인 후 그 플레이어의 캐릭터를 조정해야한다.
    //현재는 고정적으로 1번 플레이어를 설정
    public P2PPacketId CharacterState(byte[] data)
    {
        Debug.Log("캐릭터 상태 수신");

        CharacterStateDataPacket characterStateDataPacket = new CharacterStateDataPacket(data);
        CharacterStateData       characterStateData       = characterStateDataPacket.GetData();

        CharacterManager characterManager = dungeonManager.Players[1].GetComponent <CharacterManager>();

        characterManager.SetState(characterStateData);

        return(P2PPacketId.None);
    }