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

问题描述 投票:1回答:1

我有一个游戏,您可以使用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);
}
}       

}

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

谢谢您的帮助!

c# unity3d camera
1个回答
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];
}

希望这可以帮助。

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

© www.soinside.com 2019 - 2024. All rights reserved.