2

2 つの異なる場所2 人のプレイヤー (ホストとクライアント)を生成しようとしています。

プレーヤーはネットワークマネージャーによって自動的に生成されるため、これを行う方法がわかりません。

私は次のことを試しましたが、ひどく失敗しました:(。

[Command]
void CmdSpawn()
{
    var go = (GameObject)Instantiate(
              gameObject, 
              transform.position + new Vector3(0,1,0), 
              Quaternion.identity);

    NetworkServer.SpawnWithClientAuthority(go, connectionToClient);
}

特定の場所にプレイヤー オブジェクトをスポーンするにはどうすればよいですか?

4

4 に答える 4

7

NetworkManager はすでにスポーン位置をサポートしています。

プレイヤーをスポーンさせたい場所にゲームオブジェクトを追加し、NetworkStartPositionコンポーネントを与えるだけです。NetworkManager は自動的に開始位置を検出し、「Player Spawn Method」の設定に従って自動的にそれらを使用します。「Random」(すべてのプレーヤーに対して 1 つのスポーン位置がランダムに選択されます) または「Round Robin」(プレーヤー #0 が最初の位置にスポーンし、プレイヤー #1 が 2 番目など)。

于 2016-03-26T22:12:26.543 に答える
2

プレイヤー オブジェクトのスクリプトで位置を変更する際に問題はありますか? たとえば、プレーヤー オブジェクトに次のスクリプトを追加してみてください。

void Start () {
    if (isServer) // host runs
    {
        transform.position = new Vector3(0,0,0);
    }
    else if (isClient) // client runs
    {
        transform.position = new Vector3(10,0,10);
    }
}
于 2016-03-26T20:55:54.390 に答える
0

私は同様の問題に直面していました。これがこのスレッドの解決策です。最後まで読んでください。

http://forum.unity3d.com/threads/which-function-to-override.391076/

于 2016-03-28T04:08:23.350 に答える