Я делаю шутер с использованием PUN2, но я столкнулся с проблемой, когда игроки не исчезли. Движение игрока, движение снаряда с помощью PunRP C, обработка пули и т. Д. c.
Я делаю Уничтожить () игрока, когда здоровье игрока становится равным 0 со следующим кодом.
Player.cs :
GameObject Player; // player object attached
int HP = 100;
//If hit
public void Damaged(int damage)
{
photonView.RPC(nameof(UpdateHP), RpcTarget.All, damage)
}
[PunRPC]
void UpdateHP(int damage)
{
HP -= damage;
if(HP <= 0)
photonView.RPC(nameof(RemovePlayer), RpcTarget.All);
var hashtable = new Hashtable();
hashtable["HP"] = HP;
PhotonNetwork.LocalPlayer.SetCustomProperties(hashtable);
}
[PunRPC]
void RemovePlayer()
{
Destroy(Player)
}
Поток: Выполнить Поврежден (int) в Player.cs из сценария оболочки, рассчитать физическую силу с помощью PunRP C, и если оно меньше 0, выполните RemovePlayer () с PunRP C.
Вызов photonView.RP C (nameof (RemovePlayer), RpcTarget.All); приведет к ошибке.
NullReferenceException: ссылка на объект не установлена на экземпляр объекта
Кроме того, когда я использую Destroy () без PunRP C, он исчезнет только с его устройства и останется видимым для других игроков.
Уничтожить () без PunRP C:
GameObject Player; // player object attached
int HP = 100;
//If hit
public void Damaged(int damage)
{
photonView.RPC(nameof(UpdateHP), RpcTarget.All, damage)
}
[PunRPC]
void UpdateHP(int damage)
{
HP -= damage;
if(HP <= 0)
RemovePlayer();
var hashtable = new Hashtable();
hashtable["HP"] = HP;
PhotonNetwork.LocalPlayer.SetCustomProperties(hashtable);
}
void RemovePlayer()
{
Destroy(Player)
}