Вопрос про наболевшее - коллизии.
Есть игрок с возможностью стрелять снарядами (их полёт виден) и боты, каждый из которых входит в массив типа tank.
Как определить, при обработке коллизий "снаряд-бот", кто из ботов столкнулся со снарядом, если все они относятся к одному типу коллизий (CONST BOT_C=1). Т.е. при столкновении снаряда и объекта типа BOT_C возникает коллизия с ботом, но как узнать кто из целого массива ботов её создал (и затем удалить только этого бота)? |
Ответ: Вопрос про наболевшее - коллизии.
Собрал простенькую программулину (все не выкладываю только основные моменты).
Код:
Код:
|
Ответ: Вопрос про наболевшее - коллизии.
Ерунда, а не код
высавил коллизию пуля-танк, а проверяешь танк-пуля По сабжу: используй не массивы, а типы (удобнее) EntityCollided(пуля,тип_танка) возвратит тебе ентити. с которым произошла коллизия Доступ к элементу типа ты можешь получить либо простым перебором (сравнивая полученный ентити с ентити танка из типа), либо с помощью команды Object Код:
t.tank=New tank |
Ответ: Вопрос про наболевшее - коллизии.
А можно вообще не юзать коллизию, а юзать EntityDistance
|
Ответ: Вопрос про наболевшее - коллизии.
Да, согласен с Raiter -ом. вот тока так по хитрому (через object/handle) уже не выбереш нужный элемент. придется перебирать.
|
Ответ: Вопрос про наболевшее - коллизии.
Проблемка возникнет с быстрыми объектами :)
Если будет юзаться физ движок, (PhysX), тогда триггерами проверять. И можно без перебора получить будет объект, в которого попали. |
Ответ: Вопрос про наболевшее - коллизии.
Я вообще бы рекомендовал проверять на пересечение отрезка со сферой. давно выкладывал ф-ии.
|
Ответ: Вопрос про наболевшее - коллизии.
tormoz, спасиб !! :super:
меня этот код направил на очень умную мисль !! |
Ответ: Вопрос про наболевшее - коллизии.
Кусок моего кода
Код:
For a.bot=Each bot |
Ответ: Вопрос про наболевшее - коллизии.
этот кусок был выдран небрежно.
почему без цикла o ? |
Ответ: Вопрос про наболевшее - коллизии.
Почему небрежно? Нафиг ему он нужен?
Он вообще по видимому уже реализовал выстрел. Код показывает как удалить бота вместе с патроном. Ну если очень надо могу и всю функцию выложить: Код:
For o.s=Each s |
Ответ: Вопрос про наболевшее - коллизии.
вот почему:
Код:
For a.bot=Each bot |
Ответ: Вопрос про наболевшее - коллизии.
Blitzerg
1) пуля летит отсилы 2 км, в реальном случае - 400 метров 2) ограничивать полет лутче по времени чем по растоянию до игрока 3) у тебя перебор O(N^2), надо юзать деревья разбивки, хотя бы по сегментно 4) Код:
If EntityDistance(a\entity,o\pulka)<10 Then Код:
If EntityDistance(a\entity,o\pulka)<10 Then |
Ответ: Вопрос про наболевшее - коллизии.
jimon, ты издеваешся?
как будет не_программер писать деревья разбивки? Цитата:
|
Ответ: Вопрос про наболевшее - коллизии.
Дык, добавь перед последним Endif, Exit.
|
Часовой пояс GMT +4, время: 18:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot