Я думаю, вам не нужно RP C в этом случае.
Я вижу вашего персонажа IPunObservable и, я думаю, добавлен в PhotonView. Так что его здоровье будет синхронизироваться c автоматически. Вы также создаете экземпляры пуль в PhotonNetwork, что означает, что они тоже будут синхронизироваться c и иметь PhotonView.
Таким образом, у каждого игрока есть все синхронизированные пули и другие игроки.
Это означает, что все, что вы нужно проверить, была ли пуля у другого игрока и установить урон локально (не волнуйтесь, результат будет синхронизироваться c) следующим образом:
. . .
private void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.CompareTag("Hurt"))
{
// if hurt object is not mine, take damage
if (!col.gameObject.GetPhotonView().isMine)
Damage();
}
if (col.gameObject.tag == "PowerUp")
{
if (photonView.IsMine)
{
var powerup = col.GetComponent<PowerUp>();
powerup.Pickup(this);
}
else
{
}
}
if (col.gameObject.CompareTag("Bullet"))
{
// if bullet is not mine, take damage
if (!col.gameObject.GetPhotonView().isMine)
Damage();
}
else
{
}
}
// no rpc
void Damage()
{
if (!photonView.IsMine) // only player can change his life
return;
if (Health > 0)
{
Health -= 20;
}
if (Health <= 0) // check health status
{
myCounts.RpcRespawn(); //Here you should to call counter
photonView.transform.position = Vector2.zero;
Health = 100;
}
}