Синхронизация таймера Unity Photon - PullRequest
0 голосов
/ 22 апреля 2020

Я использую Unity Photon для командной игры.

У меня есть 2 команды A и B. На карте также есть зона, если вы входите в нее (только для одной команды), затем таймер. уменьшается с 10 секунд, и когда значение равно 0, происходит определенное действие. Эта зона работает через OnTriggerStay. У меня трудности с этим: когда один игрок входит в эту зону, тогда все в порядке, таймер стремится от 10 секунд до 0 с нормальной скоростью, НО, когда входит другой игрок из той же команды, тогда таймер проходит дважды так быстро. Мне нужен нормальный таймер обратного отсчета для этой зоны, а не x2 мультисекунды.

private double _timeToNewScore = 10f;
private double _time;
private bool hasCapturedOne

private List <Health> team1players;

private void OnTriggerStay(Collider other) 
{ 
 if (hasCapturedOne) 
 { 
   foreach (Health p in team1players) 
    { 
     ScorePointsFromPeriod(1); 
    }
 }
}

 private void ScorePointsFromPeriod(int team)
 {
         _time += Time.deltaTime; 
         if (_time >= _timeToNewScore)
         {
             DoSomething();
         }
 }

Пожалуйста, помогите мне избежать умножения секунд в таймере, если в команде 2 товарища по команде зона. ТНХ

1 Ответ

0 голосов
/ 22 апреля 2020

Я бы сделал так: int, в котором хранится количество игроков в вашем районе, и проверьте, есть ли хотя бы один игрок (вы можете использовать OnTriggerEnter() и OnTriggerExit() для увеличения / уменьшения вашего счета.
Затем, используя метод Update(), уменьшите таймер, если количество игроков в вашем районе больше 0

.
...