2016-08-28 8 views
0

私は現在、マルチプレイヤーfpsシューティングゲームを開発中で、私は車両についていません。Unet。マルチプレイヤー車両

私はこれらの "ClientRpc" stuff、 "Command"などを試しました。PlayerはControllスクリプトを持っていて、このスクリプトはOnControllerColliderHit関数を持っています。この方法では

、私はすべてのコライダーと私は好きでは必要ありませんいくつかのコンポーネントを無効:

...移動、射撃、カメラなどを基本的に私は必要なのは次のとおりです。彼が取得するときに、いくつかのプレーヤーのコンポーネントを無効にします車内には スクリプトは完全にシングルプレイヤーで動作しますが、マルチプレイヤーでは が本当に奇妙に見えます。

私もユニティ回答にこれを求めているが、任意の取得していない:あなたは私のためにいくつかのより多くの情報やスクリプトが必要になります場合http://answers.unity3d.com/questions/1235436/(スクリプトがある)

PS(単に投稿するだけです)。

答えて

0

私は問題は、あなたがサーバーのコンポーネントを有効/無効にしているということです。コマンドはサーバー上でのみ呼び出されるため、クライアントで同じコマンドを実行する場合は、RPCを使用します。

void Update() 
{ 
    //if there is driver in car then we can controll it. (it's a paradox for me, if there is driver and i am passanger i also can controll it lol.) 
    if(hasDriver) 
    { 
     GetComponent<carController>().enabled = true; 
    } 
    else 
    { 
     GetComponent<carController>().enabled = false; 
    } 
} 

//command function for sitting. in car. 
[Command] 
public void CmdSit(string _player) 
{ 
    //i increase how many people are in car 
    sitPlayers++; 

    cam.enabled = true; 
    //find player who sat there. 
    GameObject player = GameObject.Find(_player); 



    //i think you will get it >> 
    if (hasDriver) 
    { 
     player.transform.parent = Sitter.transform; 
     player.transform.position = Sitter.transform.position; 
     cam.GetComponent<AudioListener>().enabled = true; 


    } 
    else 
    { 
     player.transform.parent = Driver.transform; 
     hasDriver = true; 
     cam.GetComponent<AudioListener>().enabled = true; 
     player.transform.position = Driver.transform.position;    
    } 

    RpcSit(_player, hasDriver); 

} 

[ClientRpc] 
public void RpcSit(string _player, bool _driver) 
{ 
    cam.enabled = true; 
    //find player who sat there. 
    GameObject player = GameObject.Find(_player); 

    //i think you will get it >> 
    if (_driver) 
    { 
     player.transform.parent = Sitter.transform; 
     player.transform.position = Sitter.transform.position; 
     cam.GetComponent<AudioListener>().enabled = true; 
    } 
    else 
    { 
     player.transform.parent = Driver.transform; 
     cam.GetComponent<AudioListener>().enabled = true; 
     player.transform.position = Driver.transform.position; 
    } 
} 
関連する問題