- Home /
Multiplayer Problems
Hello, I'm trying to do the multiplayer tutorial found here : http://download.unity3d.com/support/resources/files/MultiplayerTutorial.pdf/
I'm running into a lot of troubles though. I'm trying to use all the code from that in a First Person Shooting game but when I move the player on the other client moves with me and same with them, when they move it just moves me instead of the designated object for the 2nd player. Are there any good fixes for this? Please help I'm confused about this I've tried everything within my knowledge to fix the problem but no avail.
"It is incredibly complicated" There is no easy solution for multiplayer or networking. Start with a VERY S$$anonymous$$ALL system and see what you can figure out! I feel that example you mention is way to complicated to begin with.
I followed it directly. I have a decent ammount of experience in unity I know the error is in this code.
using UnityEngine; using System.Collections; public class RigidAssign : $$anonymous$$onoBehaviour { void OnNetworkInstantiate (Network$$anonymous$$essageInfo msg) { if (networkView.is$$anonymous$$ine) { NetworkRigidbody _NetworkRigidbody = (NetworkRigidbody)GetComponent("NetworkRigidbody");
_NetworkRigidbody.enabled = false;
}
else {
NetworkRigidbody _NetworkRigidbody2 = (NetworkRigidbody)GetComponent("NetworkRigidbody");
name += "(Remote++)";
_NetworkRigidbody2.enabled = true;
}
} }
I'm just unsure on how to fix it.
Answer by RicardoAntezana · Apr 14, 2017 at 11:46 AM
The error is that both player movements are enabled on both of the clients, while you only realistically want it to be enabled for you. A solution for this is disabling these controller components on other players but not yourself, so they cannot act on your inputs.
using UnityEngine;
using UnityEngine.Networking;
public class Test : NetworkBehaviour
{
//This is all the components you want to disable on other clients but not yourself.
[SerializeField]
Behaviour[] componentsToDisable;
//Drag in any controller scripts in the inspector here.
void Start()
{
//Here we are checking if this is not the local player, so then we know we can disable the components.
if (!isLocalPlayer)
{
//Here we use a 'for' loop to go through each component and disable it.
for (int i = 0; i < componentsToDisable.Length; i++)
{
//This line disables each component there is.
componentsToDisable[i].enabled = false;
}
}
}
}
I hope you understand!
Your answer
Follow this Question
Related Questions
Online Player Position 1 Answer
Multiplayer Support for Android 1 Answer
How to instatiate two players simultaneoulsy before loading level 1 Answer
Browser interaction to Unity 0 Answers
Unity networking tutorial? 6 Answers