Экземпляры в Game Maker Studio 2, объясните
|
|
gameshulker | Дата: Среда, 17 Февраля 2021, 17:58 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Дело в том, что я хотел сделать убийство врагов. При нажатии мышкой на врага он удаляется, это сработало. Но, когда я добавил несколько врагов, при нажатии на одного из них, удалялись все враги. Я пытался мудрить с with, но ни к чему это не привело.
|
|
| |
faridunibodullo | Дата: Среда, 17 Февраля 2021, 19:30 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Наверное при нажатии мышки ты использовал mouse_global_left_pressed проверь, если да то используй mouse_left_pressed
|
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 10:56 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата faridunibodullo ( ) Наверное при нажатии мышки ты использовал mouse_global_left_pressed проверь, если да то используй mouse_left_pressed Нет, 2 объекта на сцене: o_slime, o_player. В o_slime: if mouse_check_button_pressed(mb_left) { instance_destroy(); }
Удаляются все экземпляры при нажатии, а мне нужно чтобы только тот, на который я нажал.
|
|
| |
JAMPER | Дата: Четверг, 18 Февраля 2021, 13:40 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| gameshulker, в каком объекте и каком событии ты используешь этот код?
Zombie Day --- "Без шансов" Space Conflict --- игра на Gamiron #8 Kill your brain --- игра на Gamiron #10 Eat them all!--- игра на Gamiron #12
|
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 22:39 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Цитата JAMPER ( ) gameshulker, в каком объекте и каком событии ты используешь этот код?
Так, 2 объекта на сцене: o_player, o_slime(он же враг). Переменные: slm_hp = 100(HP врага)
В o_player/step я написал что: if mouse_check_button_pressed(mb_left) { slm_hp -= 10 }
В o_slime/step я сделал следующее: if slm_hp <= 0 { instance_destroy(); }
Итог всего проделанного, хп отнимаются всем копиям врага(o_slime) на сцене, и соответственно удаляются тоже все экземпляры врага(o_slime). Надеюсь всё подробно, я хочу понять как отнимать, удалять и взаимодействовать с конкретным объектом, на который я нажал, а оно применяется ко всем копиям этого объекта.
|
|
| |
ДанилаСтержнев | Дата: Четверг, 18 Февраля 2021, 22:46 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Тебе надо спавнить врагов. При этом в событии create записывай id экземпляра в переменную, а в степ пиши if slm_hp <= 0 { instance_destroy(переменная); }
Красочная сюжетно ориентированная игра-головоломка
|
|
| |
gameshulker | Дата: Четверг, 18 Февраля 2021, 23:40 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Цитата ДанилаСтержнев ( ) 10
В общем, не знаю правильно понял или нет, но В o_slime/create: globalvar current_id; current_id = id; globalvar slm_hp; slm_hp = 100;
В o_slime/step:
if slm_hp <= 0 { instance_destroy(current_id); }
В o_player/step: if keyboard_check_pressed(ord("C")) { instance_create_depth(mouse_x, mouse_y, 0, o_slime); }
if mouse_check_button_pressed(mb_left) and (point_distance(o_slime.x, o_slime.y, mouse_x, mouse_y) < 12) { slm_hp -= 10;
}
И это не работает, точнее работает некорректно, удаляется один враг(и не тот, на которого я кликал, а вроде бы тот, которого я создал первым) и всё, потом это не работает. И да я пробовал без глобализации переменных
Сообщение отредактировал gameshulker - Четверг, 18 Февраля 2021, 23:40 |
|
| |