AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](https://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #15 : Декабрь 02, 2020, 11:46:18 » |
|
У меня проект не открывается из-за того, что гмс2 не обновлен. Из того, что я увидел по файлам, я не увидели, чтобы Вы меняли image_yscale и point_direction Вы используете от x,y до mouse_x,mouse_y, а нужно наоборот. Просто вставьте мой код в любой объект, вставьте туда название спрайта оружия и всё будет работать.
|
|
|
Записан
|
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #16 : Декабрь 02, 2020, 20:23:57 » |
|
У меня проект не открывается из-за того, что гмс2 не обновлен. Из того, что я увидел по файлам, я не увидели, чтобы Вы меняли image_yscale и point_direction Вы используете от x,y до mouse_x,mouse_y, а нужно наоборот. Просто вставьте мой код в любой объект, вставьте туда название спрайта оружия и всё будет работать.
В какое событие вставлять?
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](https://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #17 : Декабрь 02, 2020, 20:58:48 » |
|
В какое событие вставлять?
Step: gunAngle = point_direction(mouse_x, mouse_y, x, y); gunScale = sign(x - mouse_x);
Draw: draw_self(); draw_sprite_ext(sGun, 0, x, y, 1, gunScale, gunAngle, c_white, 1);
|
|
|
Записан
|
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #18 : Декабрь 06, 2020, 13:05:33 » |
|
В какое событие вставлять?
Step: gunAngle = point_direction(mouse_x, mouse_y, x, y); gunScale = sign(x - mouse_x);
Draw: draw_self(); draw_sprite_ext(sGun, 0, x, y, 1, gunScale, gunAngle, c_white, 1);
Боги, я так благодарен, наконец всё получилось! Ну, почти. Хотелось бы ещё на последок узнать, как менять спрайт при нажатии на кнопку.
|
|
« Последнее редактирование: Декабрь 06, 2020, 13:28:29 от DSIYS »
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](https://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #19 : Декабрь 06, 2020, 15:23:10 » |
|
Боги, я так благодарен, наконец всё получилось! Ну, почти. Хотелось бы ещё на последок узнать, как менять спрайт при нажатии на кнопку.
Смена спрайта: sprite_index = нужный спрайт Нажатие на кнопку: if (keyboard_check_pressed(кнопка))
|
|
« Последнее редактирование: Декабрь 06, 2020, 15:38:04 от AndrewVideoGames »
|
Записан
|
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #20 : Декабрь 06, 2020, 15:49:29 » |
|
Боги, я так благодарен, наконец всё получилось! Ну, почти. Хотелось бы ещё на последок узнать, как менять спрайт при нажатии на кнопку.
Смена спрайта: sprite_index = нужный спрайт Нажатие на кнопку: if (keyboard_check_pressed(кнопка)) *На кнопку мыши. Чтобы имитировать выстрел. У меня есть два спрайта: Спрайт мушкета без анимации и спрайт с анимацией выстрела. Когда я прописываю замену спрайта через sprite_index ничего не происходит. Я пишу это в событии Global left down.if mouse_check_button(mb_left)//нажатие на лкм { sprite_index=MushketAtack//замена спрайта } if cd=1 //кулдаун использования оружия { instance_create_depth(x+lengthdir_x(-50,gunAngle),y+lengthdir_y(-50,gunAngle),1,Obj_Bu)//спавн пули alarm[0]= shooting_speed//скорость стрельбы
cd=0//блок следущего выстрела }
|
|
|
Записан
|
|
|
|
ярик
Активный участник
   
Репутация: 21
OfflineНаграды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio 2
Сообщений: 396
|
 |
« Ответ #21 : Декабрь 06, 2020, 23:48:36 » |
|
Кста, отличная идея, в событие нажатие пкм, написать код для проверки нажатии пкм. GlobalLeftDown (или вроде GlobalLeftPressed) sprite_index = MushketAtack//замена спрайта if cd = true { instance_create_depth(x+lengthdir_x(-50,gunAngle),y+lengthdir_y(-50,gunAngle),1,Obj_Bu) alarm[0] = shooting_speed cd = false }
|
|
|
Записан
|
А че как 2 числа сравнить то это быстрее? Вот так >? Вот так < ? Или лучше вот так sign(0)
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #22 : Декабрь 07, 2020, 10:31:35 » |
|
Кста, отличная идея, в событие нажатие пкм, написать код для проверки нажатии пкм. GlobalLeftDown (или вроде GlobalLeftPressed) sprite_index = MushketAtack//замена спрайта if cd = true { instance_create_depth(x+lengthdir_x(-50,gunAngle),y+lengthdir_y(-50,gunAngle),1,Obj_Bu) alarm[0] = shooting_speed cd = false } Прогрессивные технологии игростроя - требуют прогрессивного кода  . Добавлено: Декабрь 07, 2020, 16:45:25 Вот только проблема, с заменой спрайта при выстреле, всё ещё не решена.
|
|
« Последнее редактирование: Декабрь 07, 2020, 16:45:25 от DSIYS »
|
Записан
|
|
|
|
ярик
Активный участник
   
Репутация: 21
OfflineНаграды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio 2
Сообщений: 396
|
 |
« Ответ #23 : Декабрь 07, 2020, 23:16:56 » |
|
Короче, не смог я открыть твою магию, вот поэтому посмотрел код в .txt. И я в шоке от увиденного. Короче, есть несколько вариантов Этот код в Step'е if (not keyboard_check(ord("A") or ord("W") or ord("S") or ord("D"))){sprite_index=PlayerStay} То есть этот код не дает сработать твоему коду анимации стрельбы. Сделай проверку на нажатие пкм в верхнем коде. Также иди учи уроки по оптимизации кода и справку. Вот мини примерчик оптимизации: var Up = keyboard_check(ord("W")); var Down = keyboard_check(ord("S")); var Left = keyboard_check(ord("A")); var Right = keyboard_check(ord("D")); var MousePressed = mouse_check_button(mv_left);
if Up = false { if Down = false { if Left = false { if Right = false { if MousePressed = false { sprite_index = PlayerStay; } } } } }
|
|
« Последнее редактирование: Декабрь 07, 2020, 23:24:12 от ярик »
|
Записан
|
А че как 2 числа сравнить то это быстрее? Вот так >? Вот так < ? Или лучше вот так sign(0)
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](https://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #24 : Декабрь 08, 2020, 11:28:23 » |
|
Вот мини примерчик оптимизации: var Up = keyboard_check(ord("W")); var Down = keyboard_check(ord("S")); var Left = keyboard_check(ord("A")); var Right = keyboard_check(ord("D")); var MousePressed = mouse_check_button(mv_left);
if Up = false { if Down = false { if Left = false { if Right = false { if MousePressed = false { sprite_index = PlayerStay; } } } } } Что это за дичь?
|
|
|
Записан
|
|
|
|
ярик
Активный участник
   
Репутация: 21
OfflineНаграды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio 2
Сообщений: 396
|
 |
« Ответ #25 : Декабрь 08, 2020, 11:53:55 » |
|
Ой, извиняюсь. CREATE xx = 0 yy = 0 Spd1 = 4 //скорость игрока
STEP var WalkY = keyboard_check(ord("W")) - keyboard_check(ord("S")); var WalkX = keyboard_check(ord("A")) - keyboard_check(ord("D")); var MousePressed = mouse_check_button(mb_left) if WalkY = 1 { //Движение по Y y -= Spd1 }else{ if WalkY = -1 { y += Spd1 } } if WalkX = 1 { //Движение по X x -= Spd1 }else{ if WalkX = -1 { x += Spd1 } } var Spd2 = point_distance(xx,yy,x,y); //speed не будет работать потому что мы передвигаемся через координаты if Spd2 = 0 { //Если расстояние между точками XxYy и XY = 0, то мы будем знать что перс остановился if MousePressed = false { //"Мы не стреляем" sprite_index = PlayerStay; //стоим } } xx = x //end code yy = y
Теперь? (Я если что писал к его коду который нашел в файле): if (not keyboard_check(ord("A") or ord("W") or ord("S") or ord("D"))){sprite_index=PlayerStay} //Был еще код Ну все, до свидание, пока. Ты доволен, я доволен, и чел с вопросом доволен.
|
|
|
Записан
|
А че как 2 числа сравнить то это быстрее? Вот так >? Вот так < ? Или лучше вот так sign(0)
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #26 : Декабрь 08, 2020, 17:43:37 » |
|
Ой, извиняюсь. CREATE xx = 0 yy = 0 Spd1 = 4 //скорость игрока
STEP var WalkY = keyboard_check(ord("W")) - keyboard_check(ord("S")); var WalkX = keyboard_check(ord("A")) - keyboard_check(ord("D")); var MousePressed = mouse_check_button(mb_left) if WalkY = 1 { //Движение по Y y -= Spd1 }else{ if WalkY = -1 { y += Spd1 } } if WalkX = 1 { //Движение по X x -= Spd1 }else{ if WalkX = -1 { x += Spd1 } } var Spd2 = point_distance(xx,yy,x,y); //speed не будет работать потому что мы передвигаемся через координаты if Spd2 = 0 { //Если расстояние между точками XxYy и XY = 0, то мы будем знать что перс остановился if MousePressed = false { //"Мы не стреляем" sprite_index = PlayerStay; //стоим } } xx = x //end code yy = y
Теперь? (Я если что писал к его коду который нашел в файле): if (not keyboard_check(ord("A") or ord("W") or ord("S") or ord("D"))){sprite_index=PlayerStay} //Был еще код Ну все, до свидание, пока. Ты доволен, я доволен, и чел с вопросом доволен. Ну, не совсем. Код полностью выглядит вот так: Stepif (keyboard_check(ord("D"))) //В право, спрайт меняется на бег в право { x+=2; sprite_index=PlayerRun; image_xscale = 1; }
if keyboard_check(ord("A")) //В лево, спрайт отражается зеркально { x-=2; sprite_index=PlayerRun; image_xscale =-1; } if keyboard_check(ord("W")) { y-=2; sprite_index=PlayerRun; } if (keyboard_check(ord("S"))) { y+=2; sprite_index=PlayerRun; } if (not keyboard_check(ord("A") or ord("W") or ord("S") or ord("D"))){sprite_index=PlayerStay}// Спрайт меняется на стояние mask_index = HitBoxMan; //объект маска object_get_mask(HitBoxMan)
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](https://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #27 : Декабрь 08, 2020, 19:21:25 » |
|
*На кнопку мыши. Чтобы имитировать выстрел. У меня есть два спрайта: Спрайт мушкета без анимации и спрайт с анимацией выстрела. Когда я прописываю замену спрайта через sprite_index ничего не происходит. Я пишу это в событии Global left down.if mouse_check_button(mb_left)//нажатие на лкм { sprite_index=MushketAtack//замена спрайта } if cd=1 //кулдаун использования оружия { instance_create_depth(x+lengthdir_x(-50,gunAngle),y+lengthdir_y(-50,gunAngle),1,Obj_Bu)//спавн пули alarm[0]= shooting_speed//скорость стрельбы
cd=0//блок следущего выстрела }
Делайте всё в Step и проверку реализуйте через if (mouse_check_button_pressed(mb_left)). Всё должно работать.
|
|
|
Записан
|
|
|
|
DSIYS
Новичок
Репутация: 0
Offline
API: GameMaker Studio 2
Сообщений: 14
|
 |
« Ответ #28 : Декабрь 08, 2020, 20:32:32 » |
|
То есть вот так? Step.gunAngle = point_direction(mouse_x, mouse_y, x, y); gunScale = sign(x - mouse_x); if mouse_check_button_pressed(mb_left)//нажатие на лкм { sprite_index=MushketAtack//замена спрайта } if cd=true //кулдаун использования оружия { instance_create_depth(x+lengthdir_x(-50,gunAngle),y+lengthdir_y(-50,gunAngle),1,Obj_Bu)//спавн пули alarm[0]= shooting_speed//скорость стрельбы
cd=false//блок следующего выстрела }
Делайте всё в Step и проверку реализуйте через if (mouse_check_button_pressed(mb_left)). Всё должно работать. Добавлено: Декабрь 08, 2020, 20:47:18 Ой, извиняюсь. CREATE xx = 0 yy = 0 Spd1 = 4 //скорость игрока
STEP var WalkY = keyboard_check(ord("W")) - keyboard_check(ord("S")); var WalkX = keyboard_check(ord("A")) - keyboard_check(ord("D")); var MousePressed = mouse_check_button(mb_left) if WalkY = 1 { //Движение по Y y -= Spd1 }else{ if WalkY = -1 { y += Spd1 } } if WalkX = 1 { //Движение по X x -= Spd1 }else{ if WalkX = -1 { x += Spd1 } } var Spd2 = point_distance(xx,yy,x,y); //speed не будет работать потому что мы передвигаемся через координаты if Spd2 = 0 { //Если расстояние между точками XxYy и XY = 0, то мы будем знать что перс остановился if MousePressed = false { //"Мы не стреляем" sprite_index = PlayerStay; //стоим } } xx = x //end code yy = y
Теперь? (Я если что писал к его коду который нашел в файле): if (not keyboard_check(ord("A") or ord("W") or ord("S") or ord("D"))){sprite_index=PlayerStay} //Был еще код Ну все, до свидание, пока. Ты доволен, я доволен, и чел с вопросом доволен. К чему здесь: var MousePressed = mouse_check_button(mb_left) if MousePressed = false { //"Мы не стреляем" ? У меня оружие и игрок два разных объекта
|
|
« Последнее редактирование: Декабрь 08, 2020, 20:47:18 от DSIYS »
|
Записан
|
|
|
|
ярик
Активный участник
   
Репутация: 21
OfflineНаграды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](https://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio 2
Сообщений: 396
|
 |
« Ответ #29 : Декабрь 08, 2020, 21:24:50 » |
|
._. Короче, про мой код забыли. И у меня к тебе вопрос. Как оружие узнает что оно стреляет? --------------------------------------------------------------- var MousePressed = mouse_check_button(mb_left); if MousePressed = false { //"Мы не стреляем" Первый код записывает в переменную "нажата ли мышка" А второй код проверяет того что мышка не нажата
|
|
|
Записан
|
А че как 2 числа сравнить то это быстрее? Вот так >? Вот так < ? Или лучше вот так sign(0)
|
|
|
|