2017-01-24 8 views
3

プレイヤーが画面に表示されたときに弾丸を生成しようとしています。結婚式でサーバーを作ると、弾丸が出ることがあり、クライアント側でも見ることができます。しかし、マッチメイキングでクライアントのようにサーバーに接続すると、弾を発することができません。私は、サーバー側でこのエラーを得た:クライアントからサーバーコマンドを実行できません

は、着信のための行動見つかりませんでした[コマンド:InvokeCmdCmd_Fire]プレーヤー(クローン)>(UnityEngine.GameObject)に、サーバとクライアントが同じNetworkBehaviourインスタンスを持つべきである[NETID = 2 ]。
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

マイコード:

for (int x = 0; x < Input.touchCount; x++) 
     { 
      touchpos = Camera.main.ScreenToWorldPoint(touch[x].position); 
      if ((touchpos.x > -4.5f || touchpos.y > -1.2f)) 
      { 
       pos = transform.position; 

       if (magazine > 0) 
       { 
        if (time > firetime && autoriffle) 
        { 
         Cmd_Fire(); 

         time = 0; 
         magazine--; 

        } 

     time += Time.deltaTime; 

    } 

    [Command] 
    void Cmd_Fire() 
    {  
     GameObject bullet = Instantiate(bulet, pos, Quaternion.FromToRotation(Vector3.up, new Vector3(touchpos.x, touchpos.y, transform.position.z) - transform.position)) as GameObject; 

     bullet.GetComponent<Rigidbody>().AddForce(bullet.transform.up * bulletspeed, ForceMode.Impulse); 

     NetworkServer.Spawn(bullet); 

     // I try NetworkServer.SpawnWithClientAuthority(bullet, connectionToClient); too but same reason 
    } 

私は私のプレーヤーのプレハブにこのスクリプトを持っています。私はプレーヤーと弾丸プレハブNetwork IdentityとNetwork Transformに追加しました。プレーヤーでローカルプレーヤー権限をチェックしました。

また、公式のUnity Multiplayer Networkingチュートリアルのすべてを載せた新しいプロジェクトを作成しようとしましたが、どちらもうまくいきませんでした。

ありがとうございました。

答えて

0

私はそれを理解しました。私はそれが地元の選手に添付されていない場合は、このスクリプトを破壊していた。私は

if(!isLocalPlayer) 
    return;` 

ない

if(!isLocalPlayer) 
{ 
    Destroy(this); 
    return; 
} 
DO-必要があります
関連する問題