//캐릭터의 애니메이션, 방향, 위치를 보내주는 메소드 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); }