Bombでオブジェクトを破壊する(RPCの活用))



オブジェクトの破壊を同期する
using UnityEngine;
using Photon.Pun;
public class ObjectHP : MonoBehaviourPunCallbacks
{
public int HP;
private PhotonView pv;
void Start()
{
pv = GetComponent<PhotonView>();
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Bomb"))
{
PhotonView bombPV = collision.gameObject.GetComponent<PhotonView>();
// 他人が投げたBombの場合は以降の処理を行わない。
if(!bombPV.IsMine)
{
return;
}
// RPCを呼び出して、全員の画面でHPを減らす処理を実行する
pv.RPC(nameof(ReduceHP), RpcTarget.AllBuffered);
}
}
[PunRPC]
void ReduceHP()
{
HP -= 1;
if (HP < 1)
{
// 破壊ではなく非表示にする(ポイント)
// 全員の画面で非アクティブにする
this.gameObject.SetActive(false);
}
}
}


【Unity6版】BattleOnline(全38回)
他のコースを見る


オブジェクトの破壊を同期する
using UnityEngine;
using Photon.Pun;
public class ObjectHP : MonoBehaviourPunCallbacks
{
public int HP;
private PhotonView pv;
void Start()
{
pv = GetComponent<PhotonView>();
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Bomb"))
{
PhotonView bombPV = collision.gameObject.GetComponent<PhotonView>();
// 他人が投げたBombの場合は以降の処理を行わない。
if(!bombPV.IsMine)
{
return;
}
// RPCを呼び出して、全員の画面でHPを減らす処理を実行する
pv.RPC(nameof(ReduceHP), RpcTarget.AllBuffered);
}
}
[PunRPC]
void ReduceHP()
{
HP -= 1;
if (HP < 1)
{
// 破壊ではなく非表示にする(ポイント)
// 全員の画面で非アクティブにする
this.gameObject.SetActive(false);
}
}
}


Bombでオブジェクトを破壊する(RPCの活用))