[PUN 2 Player每次客户端加入都会重生

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

我遇到的问题是,每当新玩家加入房间时,玩家都会在生成点处重新生成。每个玩家每次加入房间时都只能移动到生成点。这确实发生了并且有效。它也发生在重新生成的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;
        }
c# unity3d multiplayer photon
1个回答
1
投票

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

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

再见,

吉恩

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