Суббота, 04 Февраля 2023, 09:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Стрельба у танка.
Стрельба у танка.
DarkbasicДата: Пятница, 27 Июня 2014, 05:48 | Сообщение # 1
Revival Deiphi
Сейчас нет на сайте
Здравствуйте. Наверно вопрос тупой,но как сделать чтобы танк стрелял по одному снаряду с перезарядкой в N секунд? Не могу разобраться. И как сделать чтобы эффект дыма поворачивался вместе со спрайтом?




Сообщение отредактировал Darkbasic - Пятница, 27 Июня 2014, 05:55
XDominatorДата: Пятница, 27 Июня 2014, 09:47 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Если делаешь через стандартные эффекты дым, то поворачивающимся ты его не сделаешь. Да и не должен он вообще то поворачиваться)

Стрельба в гм, как правило, организована примерно так:

Код

//Create
shoot_enabled = true;//Контролирующая переменная(Триггер)
delay = 60;// - задержка между выстрелами
bspeed = 10;//Скорость полета пули.

//Global left mouse
if shoot_enabled
{
shoot_enabled = false;//Закрываем условие выстрела
alarm[0] = delay;//Устанавливаем таймер, который снова раскроет условие выстрела
bullet = instance_create(x, y, o_bullet)// Создаем объект с именем o_bullet и сохраняем ссылку на него в bullet
bullet.speed = bspeed;//Ставим скорость пули
bullet.direction = point_direction(x, y, mouse_x, mouse_y);//Ставим направление(Выстрел в точку курсора)
}

//Alarm 0
shoot_enabled = true;//Раскрываем условие.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Пятница, 27 Июня 2014, 09:48
lisiyrakДата: Пятница, 27 Июня 2014, 09:49 | Сообщение # 3
Hero of bacon
Сейчас нет на сайте
create

Код

reload = 0


step

Код

if mouse_check_button_pressed(mb_left)
{
if reload == 0
{
shoot() // скрипт выстрела  

instance_create(x+lengthdir_x(len,image_angle), y+lengthdir_y(len,image_angle), obj_smoke) // создание дыма на конце дула.  
// len - длина дула, image_angle - поворот дула

reload = 1
alarm[0] = room_speed * N // N - количество секунд, требуемое для перезарядки
}
}


alarm0

Код

reload = 0 // перезарядка закончена


KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 16:57 | Сообщение # 4
Revival Deiphi
Сейчас нет на сайте
lisiyrak,
Код
instance_create(x+lengthdir_x(len,image_angle), y+lengthdir_y(len,image_angle), obj_smoke) // создание дыма на конце дула.    
// len - длина дула, image_angle - поворот дула

при таком коде вот что выходит. Дым не "вертится" за дулом.
видео
П.С. на графу не смотрите, техническая





Сообщение отредактировал Darkbasic - Пятница, 27 Июня 2014, 17:03
lisiyrakДата: Пятница, 27 Июня 2014, 17:20 | Сообщение # 5
Hero of bacon
Сейчас нет на сайте
Darkbasic, видео не запустилось. Дым должен появляться на конце дула, кинь скриншот с тем, что у тебя получается.

KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 17:36 | Сообщение # 6
Revival Deiphi
Сейчас нет на сайте
вот



lisiyrakДата: Пятница, 27 Июня 2014, 17:44 | Сообщение # 7
Hero of bacon
Сейчас нет на сайте
Darkbasic, проверь, чтобы вторым аргументом в функциях lengthdir_x(len,image_angle) и lengthdir_y(len,image_angle) был точно image_angle башни.

KEKW

Сообщение отредактировал lisiyrak - Пятница, 27 Июня 2014, 17:48
DarkbasicДата: Пятница, 27 Июня 2014, 17:48 | Сообщение # 8
Revival Deiphi
Сейчас нет на сайте
Код
instance_create(x+lengthdir_x(128,image_angle=point_direction(x,y,bash.x,bash.y)), y+lengthdir_y(0,image_angle=point_direction(x,y,bash.x,bash.y)), smoke)

вот этот код. bash-объект башни.



lisiyrakДата: Пятница, 27 Июня 2014, 17:52 | Сообщение # 9
Hero of bacon
Сейчас нет на сайте
Darkbasic, а сам код находиться в объекте корпуса?

KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 17:54 | Сообщение # 10
Revival Deiphi
Сейчас нет на сайте
lisiyrak, нет в объекте башни.


lisiyrakДата: Пятница, 27 Июня 2014, 17:55 | Сообщение # 11
Hero of bacon
Сейчас нет на сайте
Darkbasic, башня отрисовывается стандартно или с помощью кода? Если второе, то кинь код отрисовки.

KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 18:00 | Сообщение # 12
Revival Deiphi
Сейчас нет на сайте
Код
x=tank.x
y=tank.y
image_angle=point_direction(x,y,mouse_x,mouse_y)

вот и весь код
То есть я ставлю объект башни на карту а он уже с помощью этого кода "липнет к танку".





Сообщение отредактировал Darkbasic - Пятница, 27 Июня 2014, 18:01
lisiyrakДата: Пятница, 27 Июня 2014, 18:03 | Сообщение # 13
Hero of bacon
Сейчас нет на сайте
Darkbasic, должно работать.

Код

instance_create(x+lengthdir_x(128,image_angle), y+lengthdir_y(128,image_angle), smoke)


KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 18:05 | Сообщение # 14
Revival Deiphi
Сейчас нет на сайте
lisiyrak, спасибо, работает. Но вопрос еще. Как сделать чтобы анимация дыма как только проиграется убиралась?.




Сообщение отредактировал Darkbasic - Пятница, 27 Июня 2014, 18:06
lisiyrakДата: Пятница, 27 Июня 2014, 18:15 | Сообщение # 15
Hero of bacon
Сейчас нет на сайте
Darkbasic, в events выбери other -> Animation end. В этом событии напиши:

Код

instance_destroy()


KEKW
DarkbasicДата: Пятница, 27 Июня 2014, 18:21 | Сообщение # 16
Revival Deiphi
Сейчас нет на сайте
lisiyrak, работает генерация дыма, но он генерируется рандомно.
Может так

А может так

В общем не ровно у дула.





Сообщение отредактировал Darkbasic - Пятница, 27 Июня 2014, 18:26
MinskiiДата: Понедельник, 16 Мая 2016, 15:43 | Сообщение # 17
участник
Сейчас нет на сайте
Ребят,тема может уже и прикрылась.Но есть такой вопрос.Как сделать что бы пуля летела из дула,и как сделать что бы она летела парралельно дулу? cool

Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.
Java/Kotlin, C#, C++.
Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
ShortKedrДата: Понедельник, 16 Мая 2016, 17:29 | Сообщение # 18
Renword Studio
Сейчас нет на сайте
Minskii, первый вариант авто HotSpot на спрайте, но вроде он один(центр спрайта). Второй вариант - синусы, косинусы... Константой задаём позицию (относительно центра картинки) откуда пуля должна лететь при нормальной картинке без поворотов. В зависимости от поворота, при помощи синусов, косинусов расчитываем точку после поворота --> Создаём в точке пулю, запускаем в направлении дула)

Извиняюсь за неосведомлённость по поводу нововведений в GM, так как уже давно в нём не работаю)
Вроде относительно этого ничего не поменялось)


Сообщение отредактировал ShortKedr - Понедельник, 16 Мая 2016, 17:30
MinskiiДата: Понедельник, 16 Мая 2016, 20:11 | Сообщение # 19
участник
Сейчас нет на сайте
Цитата ShortKedr ()
Minskii, первый вариант авто HotSpot на спрайте, но вроде он один(центр спрайта). Второй вариант - синусы, косинусы..

А у меня повороты через direction+ direction-,так мне надо на все углы(с десятыми частями)точки делать?


Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.
Java/Kotlin, C#, C++.
Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Стрельба у танка.
  • Страница 1 из 1
  • 1
Поиск:

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