Пятница, 29 Марта 2024, 02:33

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Наложение объектов (и удаление их мышкой поочереди)
Наложение объектов
XageuДата: Четверг, 01 Декабря 2011, 15:12 | Сообщение # 1
Хадей - Друг Детей
Сейчас нет на сайте
Как сделать так, чтобы при наложении объектов друг на друга и нажатии на эту кашу мышкой, удалялся только тот, чей спрайт был непосредственно нажат?

GameMixДата: Четверг, 01 Декабря 2011, 16:19 | Сообщение # 2
старожил
Сейчас нет на сайте
Загё, в create объекта:
Code
global.M = 0; // ID проверяемого объекта

В событии нажатия ЛКМ:
Code
with object_index
    if id > global.M
      global.M = id

    if id = global.M instance_destroy();


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал GameMix - Четверг, 01 Декабря 2011, 16:20
LunarPixelДата: Четверг, 01 Декабря 2011, 16:50 | Сообщение # 3
старожил
Сейчас нет на сайте
GameMix, а разве это будет работать?! Ну если, допустим, сделать больше 2-х объектов в одной кучи?!

XageuДата: Четверг, 01 Декабря 2011, 16:56 | Сообщение # 4
Хадей - Друг Детей
Сейчас нет на сайте
Quote (LunarPixel)
GameMix, а разве это будет работать?!

нет, не будет smile тут нужна какая-то другая проверка smile


GameMixДата: Четверг, 01 Декабря 2011, 16:58 | Сообщение # 5
старожил
Сейчас нет на сайте
В событии нажатия ЛКМ:
Code
with object_index   
      if id > global.M   
        global.M = id   

      if id = global.M {global.M = 0; instance_destroy()};


Нет. Все-равно с багом работает sad Голова не варит, однако.


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал GameMix - Четверг, 01 Декабря 2011, 17:01
XageuДата: Четверг, 01 Декабря 2011, 17:01 | Сообщение # 6
Хадей - Друг Детей
Сейчас нет на сайте
GameMix, не работает. Плюс в коде, как я понимаю, удаляется объект с наибольшим id, но это не всегда так. Или я не догоняю smile

GameMixДата: Четверг, 01 Декабря 2011, 17:05 | Сообщение # 7
старожил
Сейчас нет на сайте
Quote (Загё)
Плюс в коде, как я понимаю, удаляется объект с наибольшим id, но это не всегда так. Или я не догоняю

Новый экземпляр объекта всегда будет иметь ID больше предыдущего. Да и создаваться он будет выше предыдущего экземпляра. Вот поэтому я решил так сделать. Мой код, возможно, сойдёт, если его немного допилить smile .


Steel Standoff - 2D аркада.
Мои статьи
noTformaTДата: Четверг, 01 Декабря 2011, 17:08 | Сообщение # 8
Ukrainian independent game developer
Сейчас нет на сайте
ммм, как я понял это как в карточных играх?
Тоесть берется последняя верхняя карта из колоды? колода/куча в данном случае это массив....

создаешь массив, например под именем MyArray...
Дальше добавляешь объект на сцену и одновременно в массив MyArray.
на объект вешаешь событие "удаление" и пишешь в нем обработчик который удалит последний элемент из массива MyArray....

Вроде бы так я вижу решение проблемы...


@noTformaT
XageuДата: Четверг, 01 Декабря 2011, 17:10 | Сообщение # 9
Хадей - Друг Детей
Сейчас нет на сайте
Quote (GameMix)
Новый экземпляр объекта всегда будет иметь ID больше предыдущего.

Это-то понятно, но возможны случаи с заданием разной глубины. В принципе, её тоже проверять.
Но твой код у меня пока не работает smile Посижу, подумаю над ним, куда работать понятно smile


GameMixДата: Четверг, 01 Декабря 2011, 17:21 | Сообщение # 10
старожил
Сейчас нет на сайте
Загё, работает, наверное:
Code
with object_index
{
     if position_meeting(mouse_x,mouse_y,id)
      if id > global.M   
        global.M = id;
}

      if id = global.M {global.M = 0; instance_destroy()};


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал GameMix - Четверг, 01 Декабря 2011, 17:22
XageuДата: Четверг, 01 Декабря 2011, 17:29 | Сообщение # 11
Хадей - Друг Детей
Сейчас нет на сайте
Quote (GameMix)
Загё, работает, наверное:

Спасибо, твой вариант имеет место быть, помог smile


SaladinДата: Четверг, 01 Декабря 2011, 17:30 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Ну во первых это должна быть точная проверка столкновений. Во вторых есть такое специальное событие у обьекта - "клавиша нажата". Выполняется только для текущего обьекта. Экспериментируй, только не с глобальными, не бери дурного в голову.

Анбаннэд. Хэлоу эгин =)
XageuДата: Четверг, 01 Декабря 2011, 17:32 | Сообщение # 13
Хадей - Друг Детей
Сейчас нет на сайте
Quote (Saladin)
Ну во первых это должна быть точная проверка столкновений. Во вторых есть такое специальное событие у обьекта - "клавиша нажата".

Нет никаких столкновений, всё работает.

Добавлено (01.12.2011, 17:32)
---------------------------------------------
Quote (Saladin)
"клавиша нажата". Выполняется только для текущего обьекта.

Текущего объекта, как такового, нет.




Сообщение отредактировал Загё - Четверг, 01 Декабря 2011, 17:32
SaladinДата: Четверг, 01 Декабря 2011, 17:35 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Quote (Загё)
Нет никаких столкновений, всё работает.

Имеется ввиду маска обьекта.
Quote (Загё)
Текущего объекта, как такового, нет.

Текущий обьект это тот, в котором выполняется код. Собственно тот обьект, который должен удаляться.


Анбаннэд. Хэлоу эгин =)
XageuДата: Четверг, 01 Декабря 2011, 23:01 | Сообщение # 15
Хадей - Друг Детей
Сейчас нет на сайте
Этот код не работает в ХТМЛ5. ГМ пилить и пилить, печаль smile
ХТМЛ5 ГМ вообще плохо дружит с "глубиной" нажатия, и вообще с глубиной.


Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Наложение объектов (и удаление их мышкой поочереди)
  • Страница 1 из 1
  • 1
Поиск:

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