18.03.2019, 21:22
Quote:
Вообще всё зависит от того, какое максимальное количество шипов ты планируешь разрешить.
Если шипов будет мало - можно заюзать и динамические зоны. Но я бы лучше просто запускал индивидуальный таймер, когда игрок запускает двигатель в авто, и уже в таймере делал бы все нужные проверки. И если шипов может быть много, я бы сделал так: 1) Разделил карту на определённое количество квадратов, постаравшись заранее предугадать где чаще всего игроки будут ставить шипы. В зонах, где шипы будут ставить чаще (какое-нибудь гетто, например), квадратов было бы больше, дабы каждый квадрат в себе содержал минимальное количество зон. 2) Создал бы массив под каждый из квадратов для хранения ID шипов, чтоб в дальнейшем работать напрямую с шипами из текущего квадрата, а не обрабатывать все шипы. 3) При создании шипов определял бы квадрат, в котором они находятся, и записал бы ID зоны в соответствующий массив. 4) Отслеживал бы то, в каком квадрате находится игрок и уже работал с координатами тех шипов, которые находятся в этом квадрате. + для точности можно так же на каждые шипы вешать какой-то радиус, при котором бы запускался таймер с минимальным интервалом. И уже в таймере массивом передавать ID шипов для сверки координат, чтоб по новой не определять их. Это + индивидуальный таймер, который работает только когда игрок движется в авто - всё это позволит свести к минимуму лишние проверки. Хотя, опять же, если ты будешь делать вменяемое ограничение на количество шипов, то можно обойтись и без разграничения карты на квадраты (ну или написать более универсальную систему, начав использовать эти разграничения не только для шипов, но и для всех остальных случаев, когда нужно сверять координаты). |
Лучше делать проверку на пересечения вектора движения авто (можно разделить все 4 колеса) с линией шипов.
Даже если задержка проверки в таймере будет большой, то пересечение вектора даст 100% результат в отличии от проверки на нахождение в зоне, где можно тупо пролететь.
Можешь модифицировать под проверку пересечения векторов W_Points