나는 몇 가지 기본적인 동작을 가진 두 명의 플레이어가있는 유니티 네트워크 게임을하고 있습니다. 한 플레이어는 서버에 의해 제어되고 다른 플레이어는 클라이언트에 의해 제어됩니다.Unity3D의 멀티 플레이에서의 동기화
이 작업을 수행하기 위해 클라이언트/서버 연결을 만들었습니다. 연결이 끝나면 양쪽 플레이어 모두 화면에서 볼 수 있습니다. 나는 RPC 방법을 사용했다.
이제 서버에서 이동하면 서버 플레이어가 클라이언트 측에서 이동하는 것을 볼 수 있습니다. 이는 동기화되었음을 의미합니다. 그러나 클라이언트 쪽에서 이동하면 클라이언트 플레이어 만 이동합니다. 나는 서버 측에서 그 움직임을 볼 수 없다. 왜이 기능이 작동하지 않습니까?
나는이 코드를 UnityScript로 작성했습니다. 당신이 선수를 인스턴스화 곳
#pragma strict
var farword:boolean=false;
var backword:boolean=false;
var FirstPlayer:GameObject;
var SecondPlayer:GameObject;
var isFarword=false;
var isBackword=false;
function Update() {
if(isFarword)
{
networkView.RPC("ChangePos",RPCMode.All);
isFarword=false;
}
}
@RPC
function ChangePos()
{
if(isFarword)
{
if(Network.isServer)
{
FirstPlayer.transform.Translate(0,0,1);
isFarword=false;
}
if(Network.isClient)
{
SecondPlayer.transform.Translate(0,0,1);
isFarword=false;
}
}
else if(isBackword)
{
if(Network.isServer)
{
FirstPlayer.transform.Translate(0,0,-1);
isBackword=false;
}
if(Network.isClient)
{
SecondPlayer.transform.Translate(0,0,-1);
isBackword=false;
}
}
}
function OnGUI()
{
if(GUI.RepeatButton(new Rect(1000,100,80,70),"Farword"))
{
isFarword=true;
}
if(GUI.RepeatButton(new Rect(850,100,80,70),"second"))
{
isBackword=true;
}
}
이 코드가 잘못되었다고 생각하지 않습니다. – Joetjah
어디에서 문자를 만듭니 까? 인스턴스 생성을 사용합니까? 또는 편집기에서 끌어서 놓기 만하면됩니다. 인스턴스화하는 경우 일반 인스턴스 대신 네트워크 인스턴스를 사용하십시오. 샘플 사용 (C#에서 있지만 번역하기가 어렵지 않음) http://pastebin.com/3kVAygHs –