在Unity中使用光子网络移动客户端/播放器的问题

时间:2018-12-27 16:17:03

标签: c# unity3d photon

我正在做一个游戏,玩家被放置在盘子上,并且随机事件发生在盘子/玩家上。我经历了许多不同的网络解决方案,例如UNET,Mirror,Mirror + Steamworks P2P,但是它们都无法很好地工作(主要问题是无法通过IP加入),所以我选择了Photon。在Punv2不能用于我的项目之后(PhotonEditor.CS中的错误),我只是使用了Punv1,它在大多数情况下都可以正常工作。

现在的问题是,我试图在自己拥有的盘子上产生玩家,但是尽管每个盘子都由玩家拥有,但他们只会在第一张盘子上产生(每个盘子都有一个脚本,该脚本指定哪个玩家“拥有”它(此设置正确)。这似乎仅在我尝试与真实的播放器/客户端进行测试时才发生。如果我仅通过在预制件中生成一个假冒的播放器然后运行它,两个播放器都将被移动到正确的盘子上,因此这似乎是一个网络问题。

这是负责将玩家移至盘子的代码。

    foreach (GameObject plate in spawnedPlates)
    {
        //Here we loop through each plate, get the player assigned to it and move the player to that plate.
        GameObject player = plate.GetComponent<Plate>().assignedTo; 
        PlayerClientControl playerController = player.GetComponent<PlayerClientControl>(); // originally for UNET/Mirror. Left in incase I need it(had an RPC function that moved the player).

        player.transform.position = plate.transform.position + new Vector3(0, 4, 0);
    }

我在做什么错了?

编辑:

似乎通过调试打印语句将它们移动到正确的位置(或者至少是试图将它们移动到正确的位置),该语句打印要尝试传送到的位置以进一步巩固这是网络问题但我不知道如何解决。

我认为与主机/客户端同步有关吗?如果有人可以对此有所了解,那将是很棒的,因为我正在为此拉头发。

0 个答案:

没有答案