具有Unet的特定位置的Spawn播放器

时间:2016-03-26 18:44:25

标签: c# unity3d unity3d-unet

我想在 2个不同的位置产生 2个玩家(主机和客户端)

我不知道怎么做,因为播放器是由网络管理员自动生成的。

我尝试过以下但却失败了:(。

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

    NetworkServer.SpawnWithClientAuthority(go, connectionToClient);
}

如何在特定位置播放Player对象?

4 个答案:

答案 0 :(得分:6)

NetworkManager已经支持生成位置。

只需添加游戏对象,您希望玩家在其中生成,并为其提供outputs组件。 NetworkManager将自动检测起始位置并根据您的“玩家生成方法”设置自动使用它们“随机”(每个玩家随机选择一个生成位置)或“循环”(玩家#0在第一个位置生成,第二名球员#1等等。

答案 1 :(得分:1)

在播放器对象的脚本中更改位置是否有任何问题?例如,您可以尝试在播放器对象上添加以下脚本:

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);
    }
}

答案 2 :(得分:0)

我遇到了类似的问题,这里是这个线程中的解决方案,直到最后阅读。

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

答案 3 :(得分:0)

制作一个GameObject并将NetworkStartPosition附加到它。然后,将其放置在某处。如果要产生1个以上的生成点,则可以按CTRL + D组合键。然后,转到NetworkManager并选择Round Robin来首先生成第一,第二到第二等,然后选择Random作为随机生成点。