私はいくつかの基本的な動きを持つ 2 人のプレーヤーがいる Unity Network ゲームに取り組んでいます。一方のプレーヤーはサーバーによって制御され、もう一方のプレーヤーはクライアントによって制御されます。
これを達成するために、クライアント/サーバー接続を作成しました。接続が確立されると、画面の両側に両方のプレーヤーが表示されます。私は 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;
}
}