Game Maker - создание игр | HellRoom Games
Апрель 30, 2025, 12:28:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Стрельба из дула оружия  (Прочитано 9728 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« : Ноябрь 29, 2020, 12:31:47 »

Возникла проблема с реализацией оружия:выстрел происходит из "точки крепления". Ещё бы хотелось узнать, как сделать поворот(отражение) спрайта при определенном повороте мыши.
P.s. Жанр не совсем TDS, просто кроме платформеров и TDS тут ничего нет.
Оружие:
Global left down
if (mouse_check_button(mb_left)) {
   sprite_index= MushketAtack;
   image_speed=1.5;
}
if cd=1{
instance_create_depth(x,y,-1,Obj_Bu);
alarm[0]= shooting_speed;
cd=0;
}


End step
x=Obj_Player.x+10;
y=Obj_Player.y;

« Последнее редактирование: Ноябрь 29, 2020, 12:37:57 от DSIYS » Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #1 : Ноябрь 29, 2020, 13:10:00 »

Используйте lengthdir_x и lengthdir_y – прибавляйте их к координатам при создании пули, первым аргументом (длина) будет расстояние от центра до дула, а вторым (направление) угол направления от центра до дула.
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #2 : Ноябрь 29, 2020, 15:06:19 »

Используйте lengthdir_x и lengthdir_y – прибавляйте их к координатам при создании пули, первым аргументом (длина) будет расстояние от центра до дула, а вторым (направление) угол направления от центра до дула.
Благодарю,поискал информацию по lengthdir_x и lengthdir_y и нашёл решение. А что на счёт отражения спрайта? К примеру, я поворачиваю мушкет назад и по идее, он должен перевернутся по оси x. Как можно сделать так, чтобы он с определённого угла зеркально отражался?
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #3 : Ноябрь 29, 2020, 18:38:49 »

Как можно сделать так, чтобы он с определённого угла зеркально отражался?
Пока что я не очень понял что имеется ввиду в отражении с определённого угла, но используйте image_xscale (1 обычное состояние, -1 отраженное по горизонтали) и image_yscale (1 обычное состояние, -1 отраженное по вертикали).
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #4 : Ноябрь 30, 2020, 20:08:19 »

Как можно сделать так, чтобы он с определённого угла зеркально отражался?
Пока что я не очень понял что имеется ввиду в отражении с определённого угла, но используйте image_xscale (1 обычное состояние, -1 отраженное по горизонтали) и image_yscale (1 обычное состояние, -1 отраженное по вертикали).
Вот моя проблема (извиняюсь за качество). Мне нужно, чтобы пушка при этом положении перевернулась. Пушка следит за мышкой.

qQ53g8cJSag.jpg
Стрельба из дула оружия
* qQ53g8cJSag.jpg (131.71 Кб, 1049x1080 - просмотрено 317 раз.)
« Последнее редактирование: Ноябрь 30, 2020, 20:17:37 от DSIYS » Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #5 : Декабрь 01, 2020, 09:44:12 »

Повернулась по каким направлениям? Вправо/влево и Вверх/Вниз? Или больше?
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #6 : Декабрь 01, 2020, 11:23:40 »

Повернулась по каким направлениям? Вправо/влево и Вверх/Вниз? Или больше?
Если разделить картинку, что я прислал на 2 части по вертикали, то в правой половине мушкет будет смотреть в право, а в левой стороне он должен отразиться по оси x. т.е если спрайт заходит на левую половину (-x) то он должен зеркально отразиться
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #7 : Декабрь 01, 2020, 13:14:38 »

Повернулась по каким направлениям? Вправо/влево и Вверх/Вниз? Или больше?
Если разделить картинку, что я прислал на 2 части по вертикали, то в правой половине мушкет будет смотреть в право, а в левой стороне он должен отразиться по оси x. т.е если спрайт заходит на левую половину (-x) то он должен зеркально отразиться
Код:
image_xscale = sign(mouse_x - x); // если спрайт изначально повёрнут вправо, если влево, то sign(x - mouse_x)
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #8 : Декабрь 01, 2020, 18:07:17 »

Теперь, когда я поворачиваю оружие в лево, оно не следит за мышью, а переворачивается.
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #9 : Декабрь 01, 2020, 18:14:10 »

Теперь, когда я поворачиваю оружие в лево, оно не следит за мышью, а переворачивается.
Сформулируйте что вам нужно точнее. Кроме отражения и поворота направления я не представляю что можно сделать с оружием.
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #10 : Декабрь 01, 2020, 19:25:29 »

Если честно, не знаю как описать ещё точнее.
Дуло оружия следит за мышью по этому коду:
Код:
image_angle=point_direction(x,y,mouse_x,mouse_y);

Когда оружие поворачивается назад, то есть в левую сторону, то получается, что оно перевёрнуто(см. картинка 1). По этому коду, который вы мне скинули, оружие, когда я перевожу мышь в левую часть, оружие,а точнее его спрайт перестаёт следить за курсором и просто отражается зеркально (см. картинка 2 и 3).
Код:
image_xscale = sign(mouse_x - x);

Я бы хотел сделать так, чтобы при повороте влево спрайт и следил за мышкой, и был перевёрнут.


1.png
Стрельба из дула оружия
* 1.png (6.9 Кб, 1366x768 - просмотрено 281 раз.)
2.png
Стрельба из дула оружия
* 2.png (6.73 Кб, 1366x768 - просмотрено 289 раз.)
3.png
Стрельба из дула оружия
* 3.png (6.83 Кб, 1366x768 - просмотрено 283 раз.)
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #11 : Декабрь 01, 2020, 20:20:31 »

Работает без проблем (только поворачивать не по горизонтали, а по вертикали же нужно оружие):
Код:
var gunX = x;
var gunY = y;
var gunAngle = point_direction(mouse_x, mouse_y, gunX, gunY);
var gunScale = sign(gunX - mouse_x);
draw_sprite_ext(sGun, 0, gunX, gunY, 1, gunScale, gunAngle, c_white, 1);
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #12 : Декабрь 01, 2020, 21:47:56 »

Работает без проблем (только поворачивать не по горизонтали, а по вертикали же нужно оружие):
Код:
var gunX = x;
var gunY = y;
var gunAngle = point_direction(mouse_x, mouse_y, gunX, gunY);
var gunScale = sign(gunX - mouse_x);
draw_sprite_ext(sGun, 0, gunX, gunY, 1, gunScale, gunAngle, c_white, 1);
Не получается. Скорее всего, чтобы это работало, я изначально должен был сделать всё по умному. Быть новичком в любой сфере не просто. Я скину проект во вложении в rar файле, если будет время и желание, может вы найдёте, в чём проблема.

* Firs vertion.rar (114.46 Кб - загружено 132 раз.)
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #13 : Декабрь 01, 2020, 23:51:46 »

Экспортируйте проект через File -> Export
Записан
DSIYS
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 14


« Ответ #14 : Декабрь 01, 2020, 23:56:48 »

Экспортируйте проект через File -> Export

* Firs vertion.yyz (117.45 Кб - загружено 170 раз.)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.139 секунд. Запросов: 28.