- Home /
Network Transform problem with sync mode
Hello, I have a 2D game and I tried using the Transform Sync mode "Transform" but when the player moves, it is very laggy and scatters across the other screen. When I use the sync mode "Sync Rigidbody 2D" the player moves smoothly across both screens but the character does not rotate the direction he is facing for the other client. It works when the sync mode is set to transform but not sync rigidbody 2D.
Below is the inspector tab for my character and the code for the rotation I am using. Do you know when the sync mode transform lags or why my rigid body rotates only for the local client? Any help would be greatly appreciated. Thanks
void handleMovement() { // move left and right float move = Input.GetAxis("Horizontal"); animator.SetFloat("playerSpeed", Mathf.Abs(move)); rigidBody2D.velocity = new Vector2(move * maxSpeed, rigidBody2D.velocity.y); if (move > 0) { animator.SetBool("isWalking", true); rigidBody2D.transform.eulerAngles = new Vector2(0, 0); } else if (move < 0) { animator.SetBool("isWalking", true); rigidBody2D.transform.eulerAngles = new Vector2(0, 180); } else { animator.SetBool("isWalking", false); } }
Answer by jeffreyrampineda · Nov 23, 2017 at 08:17 AM
Keep using "Sync Rigidbody 2D" but under your Network Transform component, try changing Rotation Axis to "Y (Top-Down 2D)" or "Z (Side-on 2D)"
Hi, thanks for the reply but unfortunately this didn't work. I even tried setting it to XYZ and it still didnt rotate the 2d character. Only when I set the network transform to transform, it rotates the character.
I believe it's because you are rotating the transform from your script and not the rigidbody itself. rigidBody2D.transform.eulerAngles
try using "Rigidbody2D.$$anonymous$$oveRotation" if you wanna rotate the Rigidbody2D https://docs.unity3d.com/ScriptReference/Rigidbody2D.$$anonymous$$oveRotation.html or "Rigidbody2D.rotation" https://docs.unity3d.com/ScriptReference/Rigidbody-rotation.html
rotation and $$anonymous$$oveRotation both rotate the object but I need to adjust the Yaw to fave the character face left and right which is why I am using eulerAngles. Also, I am using the method inside rigidBody2D so it should be changing the rigidbody itself. Is it because the Network Transform doesn't update the yaw to the other clients?
Your answer
Follow this Question
Related Questions
How to use an axis of a eulerAngle for a targetAngle on a HingeJoint? [C#] 0 Answers
how to get the absolute direction? 1 Answer
Network Movement Sync Very jumpy. 0 Answers
Set a relative (custom) speed to a rotation 1 Answer
Problem in Euler angles 2 Answers