Быстрые пули

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / Быстрые пули

Страницы: 1 2 Next>> новая тема

Автор Сообщение

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 30-07-2006 22:55
Вот возникла проблемка. Хочу создать быструю пулю (как в реальности), но при указывании большой скорости, пуля может пролетать через различные объекты, не задев их. Я знаю, что эта проблемка решается легко, но что-то никак не могу дорубить. Если кто знает, как это сделать, то пришлите маленький пример мне на мыло a.b.c@tut.by. Ну а если лень одолела, то хоть так напишите и объясните.
ЗЫ Если такая тема уже была, то извините, не заметил, вот недавно только здесь появился.

гроссмейстер
Группа: Сообщество GM
Сообщений: 273
Добавлено: 31-07-2006 06:33
Поставь пуле collision с solid объектами, а объектам, в которые должна врезаться пуле, поставь solid.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 31-07-2006 13:14
Поставь пуле collision с solid объектами, а объектам, в которые должна врезаться пуле, поставь solid.

Ну и что это даст? Я проверял в шаге каждые 2-5 пикселей (в зависимости от скорости), и нормально. Тормозит когда много пуль, но... есть другой вариант, но мне не хочется его расписывать...

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 31-07-2006 17:15
Так кто-нить знает всётаки? Или неужели все такие ленивые, что никто не может хорошо обяснить как решить мою проблему?

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 01-08-2006 14:52
НЕ ужели ты такой ленивый, что не мог отыскать эту тему(была уже два раза) на форуме.
ставь это в степ(если хочешь комментарии,Как это работает, то поищи где-то было уже)
x_step_start=x
y_step_start=y

for (i=sprite_width; i<=speed; i+=sprite_width)
{
x=x_step_start+cos(degtorad(direction))*i
y=y_step_start-sin(degtorad(direction))*i
if!(position_empty(x,y))
{
instance_destroy();break
}
}
x=x_step_start
y=y_step_start

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 02-08-2006 00:08
Да не нашел я эту темку! А в степ какого объекта кидать? Пробовал в степ пули, да всёравно не выходит. По прежнему пули пролетать через стены могут.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 02-08-2006 07:35
Не рекомендую использовать cos и sin - лучше использовать lengthdir_x/y. И вместо postion_empty лучше использовать collision_point - тогда можно будет выполнять различные действия в зависимости от объекта.

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 02-08-2006 17:42
Есть ли нормальное решение? Напишите хороший и работающий на 100% пример.

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 03-08-2006 16:17
To Ka1miK
НЕ РАБОТАЕТ ТВОЙ КОД!!! Кидаю я его в степ пули, скорость=40, но пуля летит промежутками, и если стену в этот промежуток поставить, то пуля не задевает её (стене указываю solid) Неужели никак нельзя решить мою проблему!!!

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 03-08-2006 17:57
Неужели никак нельзя решить мою проблему!!!

Уже давал такой ответ: отруби инет, и думай. А злится нечего, мы тебе не обязаны ;)

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 03-08-2006 22:07
Ладно, DarkOne, закинь свой пример ka1mik@yandex.ru и ты убедишься, что всё работает, жду вобщем...
CH@$ER, про то, что ты говоришь заменить, в другом примере как раз таким способом реализовано(который тут где-то валялся)

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 03-08-2006 22:56
TO CH@$ER
Да не злюсь я. Просто вот разработка моей игры на месте стоит, да и вообще хочу скорее решить мою проблему, а то игры какие-то аркадные получаются.
To Ka1miK
Сейчас кину...

бывалый
Группа: Сообщество GM
Сообщений: 59
Добавлено: 05-08-2006 06:43
CH@$ER, про то, что ты говоришь заменить, в другом примере как раз таким способом реализовано(который тут где-то валялся)


Я думаю следует прислушаться к мнению Чейзера, он очень грамотный кодер, тот пример я сделал за 20 минут, скорее что бы показать принцип работы, а не следовать ему в точности. Тем более что тоже самое можно сделать с колижен лайн.
DarkOne ты всё таки наезжаешь и требуешь ... а лучше вежливо проси.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 06-08-2006 21:53
Я понял в чём проблема у тебя, короче отрезай ненужные края или бери вместо sprite_width параметры bounding_box.
КОроче весь косяк в том, что вокруг пули у тебя в спрайте есть ещё зелёная область(которая трансперент и не учитывается при проверки столкновения), но она учитывается когда проверяется пошагово, т.е.
если пуля должна проверяться через каждую свою ширину, она проверяется черз ширину+ширину невидимого участка.
ЗЫ ну если плохо объяснил, короче бери bounding_box, как full image и никаких проблем

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 06-08-2006 22:45
Я понял, но как теперь мне сделать так, чтобы пуля в стенку врезалась и уничтожала её, а то что-то не выходит.

маэстро
Группа: Сообщество GM
Сообщений: 723
Добавлено: 06-08-2006 23:48
А при столкновении со стенкой объекту пуля поставь Destroy - я так делаю

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 07-08-2006 21:54
3 kb

частый гость
Группа: Участники
Сообщений: 16
Добавлено: 08-08-2006 00:01
Так пуля уничтожается, а стена нет. А мне нужно, чтобы стену пуля уничтожала, или в моей игре наносила врагу повреждение.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 08-08-2006 11:48
Вот используй collision_point. Он возвращает объект, с которым столкнулась точка. Тоесть obj=collision_point(...). with obj do instance_destroy();

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 10-08-2006 18:39

for (i=sprite_width; i<=speed; i+=sprite_width)
{
x=x_step_start+cos(degtorad(direction))*i
y=y_step_start-sin(degtorad(direction))*i
if(collision_point(x,y,argument1,1,1)>0)
{
etot=collision_point(x,y,argument1,1,1)
with(etot)instance_destroy();break
}
}
x=x_step_start
y=y_step_start

Только вычисления поменяй на леннигдир_х

Страницы: 1 2 Next>> новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Начинающих) / Быстрые пули

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU