我遇到的问题是,每当新玩家加入游戏室时,玩家就会在生成点重新生成。每个玩家每次加入房间时都只能移动到生成点。这确实发生了并且有效。它也发生在重新生成的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;
}
答案 0 :(得分:1)
也许您正在缓冲此RespawnRPC调用?可以解释。
RPC只能由您调用,因此在实际调用此RespawnRPC的地方也要进行调试,这可能有助于检查代码发送的信号是否超出预期。