Как узнать какой игрок покинул комнату в OnPlayerLeftRoom, Photon?
Изучаю Photon. Хочу, чтобы при выходе игрока из комнаты, его спрайт для оставшихся игроков заменялся. Замену спрайта реализовал в функции Kill().
В функции OnPlayerLeftRoom написал такой код:
public override void OnPlayerLeftRoom(Player otherPlayer)
{
// Когда другой игрок покинул комнату
PlayerController player = Map.Players.First(p => p.photonView.Owner == null);
player.Kill();
}
Узнал из видео, что когда игрок выходит из комнаты, его Owner устанавливается на null. Однако этот код не работает: выдается ошибка о том, что подобного элемента в массиве не найдено. И правда, я смотрю в инспекторе, а объект игрока, вышедшего из комнаты, теперь принадлежит мастер-клиенту!
Вопрос: как найти в массиве компонентов PlayerController того игрока, который вышел из комнаты? Почему при выходе игрока из комнаты (функцией PhotonNetwork.LeaveRoom()) его Owner - это не сцена, не null, а мастер-клиент? В итоге у меня объект вышедшего игрока начинает повторять движения игрока мастер-клиента.
P.S. Свойство photonView в скрипте игрока — это ссылка на компонент PhotonView, висящий на игроке.
Ответы (1 шт):
Можешь создать в классе PlayerController поле c называнием NickName или что-то другое и потом проверить по нему. К примеру: PlayerController player = Map.Players.First(p => p.NickName.Contains(otherPlayer.NickName));