【问题标题】:Unity3D change Main Camera game object to fit multiplayerUnity3D 更改主摄像机游戏对象以适应多人游戏
【发布时间】:2017-03-09 01:52:49
【问题描述】:

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

}

现在,我使用 LAN 制作了这款多人游戏。所以你可以让更多的球员同时控制多个球。但是,每次玩家加入 LAN 服务器时,都会使用网络管理器从预制件中创建一个新球。问题是,正如您在脚本中看到的那样,在单人游戏版本中,我必须将游戏对象“玩家”连接到相机,但是当您在 LAN 服务器中运行此游戏时,没有玩家游戏对象, Network Manager 仅在玩家加入游戏后创建一个。所以我的问题是,如何将相机连接到每个加入游戏的玩家?另外,我相信每个玩家都必须拥有自己的相机,因为他的移动方式可能与其他玩家不同,对吗?

感谢您的帮助!

【问题讨论】:

    标签: c# unity3d camera


    【解决方案1】:

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

    希望这会有所帮助。

    记住下次尽量提供尽可能多的信息。

    【讨论】:

    • 感谢您的帮助!它解决了这个问题,很抱歉这个广泛的问题,我下次会尝试提供更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多