Суббота, 23 Ноября 2024, 01:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
TDS. Выстрел. Луч.
new5Дата: Среда, 06 Июля 2016, 11:26 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет. Пытаюсь реализовать в GMS выстрел для небольшого TDS проекта.

По задумке выстрел - не создание инстанса объекта пули, которая движется в определенном направлении. А луч, который посылается из координат оружия, по направлению к координатам мыши.
т.е. выстрел происходит как бы мгновенно, оставляя за собой трассер (шлейф).

в связи с чем возникает два вопроса:

1) есть ли в GMS raycast'ы, можно ли как-то просчитывать их коллизии?
2) как в GMS провести между двумя точками линию из спрайтов?


Не прошу писать код за меня. Может кто подсобит ссылочками на нужную информацию? Или подскажет в какую сторону копать.
gamecoderДата: Среда, 06 Июля 2016, 17:45 | Сообщение # 2
был не раз
Сейчас нет на сайте
Насчёт спрайтов не знаю, но в gm есть draw
там же и draw.line


ИнтернетДата: Среда, 06 Июля 2016, 19:24 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Код
draw_line_colour()
collision_line()

Цитата
2) как в GMS провести между двумя точками линию из спрайтов?

В теории можно циклом, но думаю это тупо.
Код
for(i=0;i<300;i+=5){
draw_sprite(sprite_index,1,x+i,y)
}

И то это будет просто линия "в пустоту"


Сообщение отредактировал Интернет - Среда, 06 Июля 2016, 19:38
gamecoderДата: Четверг, 07 Июля 2016, 00:27 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата Интернет ()
for

Никогда не мог понять суть циклов for
<_<

Добавлено (07 июля 2016, 00:27)
---------------------------------------------
Цитата Интернет ()
draw_sprite(sprite_index,1,x+i,y)

А вот не знаю
new5 просил нарисовать линию между двумя точками, а точнее к мышки
Можно поробовать запустить спрайты с гигантской скоростью и может они моментально, а на мышку наложить объект при касании с криррыс спрайты уничтожались и линия обрывалась




Сообщение отредактировал gamecoder - Четверг, 07 Июля 2016, 00:27
new5Дата: Четверг, 07 Июля 2016, 06:03 | Сообщение # 5
был не раз
Сейчас нет на сайте
Интернет, спасибо за совет, сейчас почитаю документацию про collision_line(), звучит так будто это то, что я искал.

Цитата gamecoder ()
В теории можно циклом, но думаю это тупо

Как это видится мне. без цикла все же никуда.

Алгоритм я представляю таким:
-мы посылаем луч по направлению к мышке,
-определяем первую точку столкновения с чем-то
-просчитываем определенное кол-во координат на линии (в зависимости от длины луча например). и спавним в них спрайты. получаем "луч" из спрайтов(при должной плотности точек).


Вот с последним пунктом проблема. Что-то мне подсказывает что нужна здесь математика, а ее я совсем не помню уже.


Сообщение отредактировал new5 - Четверг, 07 Июля 2016, 06:04
ИнтернетДата: Четверг, 07 Июля 2016, 12:29 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Цитата gamecoder ()
Никогда не мог понять суть циклов for

1) задаём переменную.
2) проверяем значение переменной.
3) прибавляем заданное число к этой переменной.
Это временами очень удобно. Например
Код
place_free(x-25,y)
иногда может работать не так как нужно
Код
for(i=0;i<25;i++){place_free(x-i,y) exit}
А вот это иногда очень выручает, да и много ещё случаев когда циклы удобны.


Сообщение отредактировал Интернет - Четверг, 07 Июля 2016, 12:35
TymonrДата: Четверг, 07 Июля 2016, 14:22 | Сообщение # 7
With OpenSource forever
Сейчас нет на сайте
Цитата Интернет ()
for(i=0;i<25;i++){place_free(x-i,y) exit}

Цитата Интернет ()
for(i=0;i<300;i+=5){
draw_sprite(sprite_index,1,x+i,y)
}

Оптимизация от бога


Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
new5Дата: Пятница, 08 Июля 2016, 08:38 | Сообщение # 8
был не раз
Сейчас нет на сайте
Цитата new5 ()
2) как в GMS провести между двумя точками линию из спрайтов?


В общем решил этот вопрос. Для этого доработал формулу нахождения центра отрезка, при наличии координат начала и конца отрезка.

оригинал формулы: Xc = (Xa + Xb)/2 и Yc = (Ya + Yb)/2;

так же в моей формуле есть возможность задавать "коэффициент кучности\плотности".



Сообщение отредактировал new5 - Пятница, 08 Июля 2016, 08:39
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг