2

我正在尝试在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

4 回答 4

7

NetworkManager 已经支持生成位置。

只需在您希望玩家生成的地方添加 GameObjects 并为他们提供NetworkStartPosition组件。NetworkManager 将自动检测开始位置并根据您的“玩家生成方法”设置自动使用它们,“随机”(为每个玩家随机选择一个生成位置)或“循环规则”(玩家 #0 在第一个位置生成,玩家 #1 排在第二位,依此类推)。

于 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

制作一个 GameObject 并将 NetworkStartPosition 附加到它。然后,把它放在某个地方。如果你想要超过 1 个生成点,你可以 CTRL+D 那个对象。然后,转到 NetworkManager 并选择 Round Robin 生成第一到第一、第二到第二等。选择随机生成随机生成点。

于 2018-08-19T07:02:57.717 回答
0

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

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

于 2016-03-28T04:08:23.350 回答