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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D更改Main 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);
}
}       

}

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

谢谢您的帮助!

答案

首先,问题有点广泛,因为您没有提供有关您正在使用的网络的信息。您使用的是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];
}

希望这可以帮助。

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

以上是关于Unity3D更改Main Camera游戏对象以适应多人游戏的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D杂烩:位置修改,子对象获取,组件获取,通过脚本文件获取被绑定对象

Unity3D基础知识之Camera摄像机及其属性

Unity3D:将所有游戏对象转换为相同大小,而不管其比例如何

Unity3D脚本编程--基本概念

Unity3D:透视与正交

Unity3D_(游戏)贪吃蛇