Unity3D更改Main Camera游戏对象以适应多人游戏

时间:2016-10-26 15:45:04

标签: c# unity3d camera

我有一个使用W,A,S和D控制球的游戏。主摄像机使用此脚本跟随玩家(球):

public class CameraMovement : MonoBehaviour {

public GameObject Player;

private Vector3 Set;


void Start()
{
    Set = transform.position - Player.transform.position;
}

void LateUpdate()
{  
        transform.position = new Vector3 (-280f, 15f, 28f);
        transform.rotation = Quaternion.Euler (0.0f, 90.0f, 0.0f);
}
}       

}

现在,我使用局域网制作了这款游戏多人游戏。所以你可以让更多的玩家同时控制多个球。但是,每次玩家加入局域网服务器时,都会使用网络管理器从预制件创建一个新球。问题在于,你可以在脚本中看到,在单人游戏版本中我必须将游戏对象'播放器'连接到相机,但是当你在局域网服务器中运行这个游戏时,没有玩家游戏对象,网络管理员仅在玩家加入游戏后创建一个。所以我的问题是,如何将相机连接到每个加入游戏的玩家?另外,我相信每个玩家都必须拥有自己的相机,因为他可以从另一个玩家那里悄悄地移动,我是对的吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

首先,问题有点广泛,因为您没有提供有关您正在使用的网络的信息。 您使用的是PUN,UNET还是其他的?

我可以广泛地解释如何解决这个问题。

当玩家加入时,你应找到主摄像头并将其分配给他自己的客户。

因为每个客户都有自己的主摄像头,所以它不会成为问题。

//The code will look something like this.
void OnJoinedServer() //When the player joins the server
{
     //find the main camera gameobject
     GameObject camera = Camera.main.gameObject;
     camera.transform.SetParent(player.transform);
     //Maybe set the right position as well
     camera.transform.localPosition = [SomeVector3];
}

希望这有帮助。

请记住下次尝试提供尽可能多的信息。