Вторник, 26 Ноября 2024, 17:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
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 дней. Если вспомню, плюсану обязательно.
  • Страница 1 из 1
  • 1
Поиск:

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