我想在 2个不同的位置产生 2个玩家(主机和客户端)。
我不知道怎么做,因为播放器是由网络管理员自动生成的。
我尝试过以下但却失败了:(。
[Command]
void CmdSpawn()
{
var go = (GameObject)Instantiate(
gameObject,
transform.position + new Vector3(0,1,0),
Quaternion.identity);
NetworkServer.SpawnWithClientAuthority(go, connectionToClient);
}
如何在特定位置播放Player对象?
答案 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作为随机生成点。