всем привет, уже не одну неделю ломаю голову как решить такое вот условие. Помогите, направите на путь истинный. (в скриптинге у меня совсем небольшой опыт)
2д игра на фотон клауд. чтото типа арены. у персонажей есть переменная очков, когда 2 перса сталкиваются друг с другом, то тот у кого очков меньше ворует у того у кого больше. На первый взгляд все просто, я построил решение таким образом:
на префабе перса есть управляющий скрипт, в котором ОнКолижен событие вызывается при столкновении с другим персом(отслеживает по тегу "Плеер"), получает очки противника, сравнивает со своими, и выполняет одно из условий:
1. если мои очки больше чем у противника, то у меня отнять кусок очков
2. если мои очки меньше чем у противника, то мне добавить.
И это все происходит на мастерклиенте.
Получается когда 2 перса сталкиваются, у ОБОИХ вызывается событие колизии, происходит проверка, и у каждого из них выполняеться разный кусок кода. одному добавляется очки, другому отнимается.
Так вот у меня все это прекрасно работало, но когда я решил ввести флаг неуязвимости, и добавил проверку в событии - если перс неуязвим, то не выполнять это событие, то начались нехорошие баги.
И я начал думать возможно нужно не на каждом персе проверять столкновение с другими, а сделать в сцене какой то контроллер (типа рефери) который следит кто с кем столкнулся , обрабатывает логику и выдает значение очков игрокам (на мастерклиенте). Но проблема в том - как отследить события столкновения, если ОнКолижен метод должен быть на персах, и как обезопасить себя от того, что если в одном тике столкнутся 2 пары персов, обработчик (рефери) не будет знать какую пару из них обрабатывать, правда можно в массиве что бы он получал игроков, но как то мудрено все. Или может дистанцию использовать между персами, но у меня будет около 30ти игроков на арене, и каждый с каждым должен прощитывать дистанцию, уж вроди ресурсозатратно. Извините если криво объяснил, надеюсь на помощь советом, спрашивайте что не понятно, я развернуто опишу.