Photon can't syncronize character with other user.

Options
Good evening.

I have been developing a kind of video chat with some activities. I'll just leave a little explanation of what I intend to do in case it helps to solve my problem, since I'm a bit new at this.
Until now, I had managed to integrate playfab with photon. I have checked with playfab if user is present in our database and with the photon I create a room or let me join it. When inside the room a video calls with the help of Agora.io is initialized.

For now the scene itself is correctly transmitting the video call.
I am managing to film the session, with the help of RockVR, in which with the photon I instantiate a red dot to indicate to the other users that I am recording the session, photon also remove across all the user when I hit stop

I can instantiate and move my test character correctly.
My problem now lies in trying to get my character to work.
Because if I move it on one of the clients, it will not sync on the other side.

My intention is to create something like a rag doll. So when I move the head the rest of the body comes after.
The character's Parent already has a photon view and photon transform view. In the photon view I have attached to the observer, the photon transform view and the character's own head and inside the head I have the script that will move the character with the drag of the mouse.

if (pv.isMine)
{
Vector3 mousePosition = new Vector3(
Input.mousePosition.x,
Input.mousePosition.y,
10.0f);

Vector3 objPosition = Camera.main.ScreenToWorldPoint(mousePosition);

Vector3 clampPos = new Vector3(
Mathf.Clamp(objPosition.x, -8.3f, 8.3f),
Mathf.Clamp(objPosition.y, -4.0f, 4.0f),
objPosition.z);


myRB.drag = myRB.mass;
myRB.MovePosition(clampPos);
}

Where I check if the object is mine before proceeding with the movement.
My problem now is that this movement is not seen by the other user.
Someone can help me?

Answers

  • very simple workflow once you get the hang of it.....


    using onphotonserializeview

    you WRITE data when the view is yours (handled by saying, if stream.iswriting, automatically)
    you read data when its other players.

    in your input loop, you then make sure photonview.Ismine = true, because you are controlling it, otherwise, you do not accept input. then in a fixed update loop (for rigidbodys) or an update loop (for transforms) you apply the received values from the onphotonserializeview that you buffered (not applied) to the game object!