id объекта при клике мыши на него
|
|
hmpr | Дата: Суббота, 28 Марта 2015, 23:02 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Всем привет. Как можно сделать, чтобы при клике мыши по объекту возвращался id этого самого объекта, который будет использоваться в другом объекте? Выглядеть это должно примерно как в стратегиях, когда кликаешь по вражескому юниту, твой юнит направляется к нему и его же атакует
|
|
| |
EfimovMax | Дата: Суббота, 28 Марта 2015, 23:19 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| objTest.id возвратит идентификатор объекта. Собственно, присвой его глобальной переменной (global.Vrag=objTest.id) и обращайся к объекту через неё из любого места.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Суббота, 28 Марта 2015, 23:20 |
|
| |
YellowAfterlife | Дата: Воскресенье, 29 Марта 2015, 02:02 | Сообщение # 3 |
Сейчас нет на сайте
| instance_place, instance_position, и все collision_ функции возвращают ID найденного экземпляра. Следовательно, можно проделывать следующим образом в шаге юнита: if (selected && mouse_check_button_pressed(mb_left)) { // если текущий юнит выбран и мышь нажата target = collision_point(mouse_x, mouse_y, obj_enemy, false, true) if (target) { /* найден враг, можно атаковать */ } }
Цитата EfimovMax ( ) objTest.id возвратит идентификатор объекта. Утверждение верно, но obj_name.id возвратит id первого экземпляра объекта, а не какого-то отдельно взятого [на который нажали мышью].
Сообщение отредактировал YellowAfterlife - Воскресенье, 29 Марта 2015, 04:04 |
|
| |
hmpr | Дата: Воскресенье, 29 Марта 2015, 20:43 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Цитата YellowAfterlife ( ) instance_place, instance_position, и все collision_ функции возвращают ID найденного экземпляра. Следовательно, можно проделывать следующим образом в шаге юнита: if (selected && mouse_check_button_pressed(mb_left)) { // если текущий юнит выбран и мышь нажата target = collision_point(mouse_x, mouse_y, obj_enemy, false, true) if (target) { /* найден враг, можно атаковать */ } }
Большое спасибо за помощь. Вроде работает. Еще один вопрос: мой гг при клике мыши по врагу поворачивается по направлению к нему, но при движении гг, его направление остается прежним, т.е. он к врагу не разворачивается. Как сделать, чтобы он разворачивался, т.е. чтобы он как-бы удерживал цель?
Вот такой код у ГГ прописан и плюс еще клавиши перемещения по комнате на клавиатуреКод if (mouse_check_button_pressed(mb_left)) { target = collision_point(mouse_x, mouse_y, obj_vrag, true, true) image_angle=point_direction(x, y, target.x, target.y) }
|
|
| |
EfimovMax | Дата: Воскресенье, 29 Марта 2015, 20:53 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Так потому что у тебя поворот спрайта происходит только при нажатии мыши. Вынеси его с блока if:
Код if (mouse_check_button_pressed(mb_left)) { target = collision_point(mouse_x, mouse_y, obj_vrag, true, true) } image_angle=point_direction(x, y, target.x, target.y)
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
hmpr | Дата: Воскресенье, 29 Марта 2015, 21:51 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Цитата EfimovMax ( ) Так потому что у тебя поворот спрайта происходит только при нажатии мыши. Вынеси его с блока if:
так он вообще не видит такой переменной и ошибку выдает
|
|
| |
YellowAfterlife | Дата: Понедельник, 30 Марта 2015, 01:04 | Сообщение # 7 |
Сейчас нет на сайте
| Цитата hmpr ( ) так он вообще не видит такой переменной и ошибку выдает Установку угла нужно действительно вынести из блока, но добавить проверку на существование врага. Create Event: target = noone
Step Event: if (instance_exists(target)) { image_angle = point_direction(x, y, target.x, target.y) }
|
|
| |
hmpr | Дата: Понедельник, 30 Марта 2015, 13:06 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Большое спасибо за помощь. Все работает. Жаль плюсануть не получилось, пишет, что только через 6 дней. Если вспомню, плюсану обязательно.
|
|
| |