PUN2 |该过程被调用两次

PUN2 | The process is called twice

我目前正在使用PUN2 制作一款多人射击游戏。 实现了参与房间和移动与子弹的同步。

但是hit时的处理执行了两次。 也许这是因为两台设备上存在的完全相同的对象正在处理每个镜头。 (也许)

如何避免重复命中处理?

代码:

流程:射手给shell分配自己的识别号并开火→谁命中shell都会受到伤害

Player.cs

private void OnCollisionEnter(Collision collider)
{
        BulletController bulletController = collider.gameObject.GetComponent<BulletController>();

        if (photonView.Owner.ActorNumber != bulletController.shooterUserId)
        {
            photonView.RPC(nameof(Damaged), RpcTarget.All, bulletController.Damage, bulletController.shooterUserId);
            bulletController.Remove();
        }
}

[PunRPC]
void Damaged(int damage, int userId)
{
    var hashtable = new Hashtable();
    hashtable["HP"] = HP;
    PhotonNetwork.LocalPlayer.SetCustomProperties(hashtable);

    if (photonView.IsMine)
    {
        HP -= damage;
        if (HP <= 0)
        {
            this.gameObject.SetActive(false);
            HP = 0;

            if (userId != photonView.OwnerActorNr)
                photonView.RPC("KilledPlayer", RpcTarget.Others);

        }
    }
}

[PunRPC]
void KilledPlayer()
{
    GameSparksLeaderboard.SaveXP(100);
}

我只是忘了附上 photonView.IsMine。 这很重要,但很容易忘记......