![]() |
Дыры от ПУЛЬ !!!
Как можно сделать чтобы попала пуля в дверь остался след:) , затем пуля не просто сдыхает:) а перемещяется дальше и выходит из двери:) остоется след:) , попадает в бота и тот сдыхает:) . Всмысле мне не недо говорить как сделать след от пулиB) , А чтобы ана могла проходить с квозь стену и колизия работала.:dontknow:
И зачем нужна команда EntityBox:dontknow: |
Re: Дыры от ПУЛЬ !!!
не понял. что тебе надо? если ты хочешь что-бы пуля проходила сквозь стену, то им не нужна колизия. дырки рисуй спрайтами. или я неправильно тебя понял....
|
Re: Дыры от ПУЛЬ !!!
да. дыры спрайтами, пулю,при соприкосновении с дверью, просто перемещаешь по траектори не много дальше(учитывая толщину двери) и всё.
|
Re: Дыры от ПУЛЬ !!!
Зачем тогда коллизия?
Если хочешь фиксировать акт коллизи без реакции системы, то поставь в Collisions response в ложь. |
Re: Дыры от ПУЛЬ !!!
Цитата:
|
Re: Дыры от ПУЛЬ !!!
После определения коллизии пули со стенкой, ставь на нее спрайт дырки, потом отключай коллизию пули с помощью EntityType() - второй параметр на 0 поставь, потом двигай пулю вперед, потом опять ставь EntityType() такой, который был до этого. Ну и так с каждой стенкой, пока энергия пули не иссякнет :)
|
Re: Дыры от ПУЛЬ !!!
Принцип понял. Но после того как остается первая дыра пуля не проверяется на столкновение. Буду парится если так и не получится то буду просить помощи.
|
Re: Дыры от ПУЛЬ !!!
Я предлогаю другой принцип:
надо выпускать не одну а две пули (вторую можно просто - pivot), одна будет с колизией относительно стен, а другая относительно людей-ботов. Когда эта двойная пуля летит то есть два варианта: - она попадает в стену, одна остаётся, вторая летит дальше, и создаётся опять пуля(с колизией относительно стен)... - когда пуля (с колизией относительно ботов) попадет в тело то делается необходимый просчет попадания (урон, спраиты всякие)... И можно сделать чтобы пуля после пробивания тела летела дольше... При попаданиях пули (первой или второй) уменьшается число её силы и когда она очередной раз врезалась то просто удаляешь её. Программа по моему типа такой: (пуля состоит из двух частей пуля1 и пуля2 ) Пуля Пуля1 Пуля2 For i=1 to (количество пуль) if (пуля существует) then if (пуля1 не существует) then (Создать пулю1) if (пуля2 не существует) then (Создать пулю2) if (пуля1 врезалась) then (Поросчёт следвия попадания...) (удалить пулю1) end if if (пуля2 врезалась) then (Поросчёт следвия попадания...) (удалить пулю2) end if MoveEntity (обе пули),0,0,+0.01 end if next |
Re: Дыры от ПУЛЬ !!!
А вообще, лучше попадание пули проверять с помощью CameraPick(), так как скорость пули большая, и ею можно пренебречь. А например для крупнокалиберных снарядов (гранаты, ракеты) уже делать проверку коллизией.
Принцип действия с CameraPick() примерно такой же: Код:
;Обнуляем стек стенок :) А вообще тут необходимо использовать Типы вместе с Object\Handle, для быстрого доступа к ботам(для проверки) - он же не один будет я так понимаю. Тоесть все стенки надо назвать Wall или как-нить подобно, и условие проверки будет такое Код:
;......................................... Надеюсь меня за Goto здесь не убьют?:) |
Re: Дыры от ПУЛЬ !!!
Спасибо за ответы:super: . Тот способ который предложил Nunan хорош, но этот способ не будет оставлять обратных следов. И я тут придумал способ который по моему мнению должен работать(буду делать утром(утора вечера мудренее:) ))
Допустим возьмем не мощную пулю, которая способна пробить лишь две стены, после того как пуля попала в стену, создаем ей детя которое перемещяем чуть чуть в перед, затем пускаем её в перед, если произошла коллизия, то оставляем след от попадания, но так как на выходе из стены она не проверяется на столкновение, то после того как она попала в стену или прошла максимальное расстояние своей жизни создаем ей детя и отправляем его обратно(и оно оставит обратный след).8) |
Re: Дыры от ПУЛЬ !!!
Зачем такой гемор?
"Пикаешь" стенку Код:
CameraPick() Код:
PX = PickedX() Дальше применяешь LinePick() по этим же координатам, только с другой стороны Код:
LinePick(PX, PY, PZ - 100, PX, PY, PZ) Код:
PX = PickedX() |
Re: Дыры от ПУЛЬ !!!
Я понимаю, что мой метод содержит много гемора, но это даже лучше(помогает в изучении особенностей Блица);) . Как не странно но мой метод работает(уря хоть что-то я сделал сам:@ ).
Если кому нужен код то пожалуйста(кусок кода)B) Цитата:
P.S.... Дыры остаются но они не прикрепляются к попавшим предметам(допустим дверь). Как лутше сделать чтобы пули присобачивались:) в попавший предмет.:-) ЗЫ не ругайте за мелкий шрифт комп опять глючит(или это я глючу) P.S. Админестрация почему я немогу в расширенном режиме менять настройки размера шрифта |
Re: Дыры от ПУЛЬ !!!
|
Re: Дыры от ПУЛЬ !!!
Vlad
Ну и зря, нужно добиваться простого и эффективного кода, а не геморроя :-D Насчет крепления дырок - просто припаренти ее после позиционирования с помощью EntityParent(). Тоесть если юзаешь коллизию, то узнаешь обьект с которым столкнулась пуля с помощью CollisionEntity() и парентишь спрайт дырки к нему. Перед удалением открепляешь. ЗЫ Проще надо быть ;) |
Re: Дыры от ПУЛЬ !!!
Я делаю но они у меня как висели в воздухе так и весят.
Цитата:
|
Часовой пояс GMT +4, время: 17:55. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot