每个客户端加入时都会重生PUN 2 Player

时间:2020-01-28 02:17:05

标签: c# unity3d multiplayer photon

我遇到的问题是,每当新玩家加入游戏室时,玩家就会在生成点重新生成。每个玩家每次加入房间时都只能移动到生成点。这确实发生了并且有效。它也发生在重新生成的RPC中,但是直到玩家死亡后才调用。如果有任何新玩家加入并产生,则将任何现有玩家传送到产生点(就像这是他们第一次加入)。我试过检查本地光子视图,但这不起作用。我试图弄清楚重生的来源,但我无法查明。似乎每个玩家的Start()函数运行两次,但这没有任何意义。任何想法为什么会发生这种情况?

播放器启动功能:

void Start()
        {
            if (photonView.IsMine)
            {
                SetPlayerTeam(gameInst.specString);
                transform.position = GameManager.instance.spawnPoints[Random.Range(0, GameManager.instance.spawnPoints.Length)].position;
                transform.rotation = GameManager.instance.spawnPoints[Random.Range(0, GameManager.instance.spawnPoints.Length)].rotation;
            }
        }

Player Respawn RPC

void RespawnRPC()
        {
            SetRagdoll(false);

            if (photonView.IsMine)
            {
                transform.position = GameManager.instance.spawnPoints[Random.Range(0, GameManager.instance.spawnPoints.Length)].position;
                transform.rotation = GameManager.instance.spawnPoints[Random.Range(0, GameManager.instance.spawnPoints.Length)].rotation;

                if (!playerProperties.ContainsKey("state"))
                {
                    playerProperties.Add("state", "alive");
                }
                playerProperties["state"] = "alive";
                PhotonNetwork.LocalPlayer.SetCustomProperties(playerProperties);
            }

            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
        }

1 个答案:

答案 0 :(得分:1)

也许您正在缓冲此RespawnRPC调用?可以解释。

RPC只能由您调用,因此在实际调用此RespawnRPC的地方也要进行调试,这可能有助于检查代码发送的信号是否超出预期。