В своем проекте я создаю игру, похожую на «Бешенство безумия», но многопользовательскую через сеть Photon. В настоящее время у меня возникла проблема, когда неправильные клиенты перевернули «руку + пистолет».
Когда клиент 1 переворачивает своего персонажа, его рука переворачивается локально, а рука клиента 2 переворачивается локально.
Фотографии : https://imgur.com/a/NkP3KEF
Я полагаю, что проблема заключается в следующем: в моем логи c персонажа, которого я вызываю, PunRP C, который переворачивает неправильную руку клиента.
Функция переворота основного персонажа:
void FixedUpdate()
{
if (!disableMove)
{
//if (!devTesting)
//{
if (photonView.isMine)
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
if (facingRight == false && moveInput > 0)
{
photonView.RPC("Flip", PhotonTargets.AllBuffered);
photonView.RPC("Fliphand", PhotonTargets.AllBuffered); //FLIPS HAND+GUN
//Flip();
}
else if (facingRight == true && moveInput < 0)
{
photonView.RPC("Flip", PhotonTargets.AllBuffered);
photonView.RPC("Fliphand", PhotonTargets.AllBuffered); //FLIPS HAND+GUN
//Flip();
}
}
}
Вышеприведенная функция вызывает для этих двух функций PunRP C.
Перестановка символов:
[PunRPC]
void Flip()
{
facingRight = !facingRight; //toggle flipping
GetComponent<SpriteRenderer>().flipX = !facingRight;
}
Ручное переключение (дочерний объект для вышеупомянутого игрового объекта):
[PunRPC]
void Fliphand()
{
child = GameObject.Find("Hand");
sight = GameObject.Find("Granny_warr_lasersight");
deagle = GameObject.Find("deagle_animation");
facingRight2 = !facingRight2;
child.GetComponent<SpriteRenderer>().flipY = !facingRight2;
sight.GetComponent<SpriteRenderer>().flipY = !facingRight2;
deagle.GetComponent<SpriteRenderer>().flipY = !facingRight2;
}
Я думаю, что проблема в том, что в комнату входят два клиента, и у обоих клиентов есть дочерние объекты, называемые "Рука" и c. И, вызывая этот PunRP C с клиента 1, он переворачивает «Рука» на экране клиента 2.
Может кто-нибудь помочь мне разобраться с этой проблемой? Я постараюсь сделать это более понятным, если это необходимо, и предоставлю больше картинок, если потребуется.
ПРИМЕЧАНИЕ. Отражение символов отлично работает на обоих клиентах.