Среда, 24 Апреля 2024, 14:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Выбор нескольких объектов и уничтожение.
Выбор нескольких объектов и уничтожение.
ГлюкДата: Понедельник, 31 Октября 2016, 13:34 | Сообщение # 1
Lampa Studio
Сейчас нет на сайте
Ребят, помогите в очень срочном порядке. По определенным причинам я дня 3 вообще головой навряд ли до чего смогу додуматься, а надо срочно.
Опишу проблему.
1. При глобальном нажатии в игре создается проверяющий объект o_destr
2. При столкновении с объектом уничтожения размер массива в объекте проверки прибавляется на 1.
3. Почему то я смог реализовать уничтожение только 2 объектов. И просто не могу допереть, как можно легко и без лишней нагрузки на игру, сделать уничтожение всех выделенных объектов. Да все так плохо. Но поверьте не могу. Ниже код:

Код

=Create

b=0
go=instance_number(o_cubes1)
for(i=0;i<go;i+=1)
{
mass[i]=0;
}
go_del=false
go_del=true
[b]///Собственно тут мы проверяем при создании, сколько потенциальных объектов к уничтожению имеем. и пишем в массивы ( Можно как то ли еще отобрать их по значению переменных ? тоже такой наболевший вопрос.[/b]

Код


=step

if instance_exists(o_cubes1) and place_meeting(x,y,o_cubes1)  and go_del=true
{
b=instance_number(o_cubes1)
for(i=0;i<b;i+=1)
{
if mass[i]=0
{
mass[i]=instance_nearest(x,y,o_cubes1)
break;
}
}
}
////Ну тут все просто. проверяем массив, если 0 записываем объектус Id.


Код


=Global Mouse Left Realesed

for(i=0;i<global.destr;i+=1)
{
if mass[i].spr=mass[i+1].spr and mass[i]>0 and mass[i+1]>0
{
mass[i].die=1
mass[i+1].die=1
} else { break; }
}
instance_destroy()
///Тут я проверяю собственно подходят ли переменные у двух массивов, проверяю больше ли 0, если да уничтожаем объекты.


Повторюсь:
3. Почему то я смог реализовать уничтожение только 2 объектов. И просто не могу допереть, как можно легко и без лишней нагрузки на игру, сделать уничтожение всех выделенных объектов. Да все так плохо. Но поверьте не могу.


Добавлено (31 октября 2016, 12:46)
---------------------------------------------
Собственно из последнего я и не могу понять, почему не удаляются все выбранные объекты. Ведь цикл вроде правильно работает.
Массивы по идеи должны проверяться как то так по циклу.
mass[0] mass[0+1]
mass[1] mass[1+1]

итд. или я чего то не понимаю?

Добавлено (31 октября 2016, 12:51)
---------------------------------------------
и еще. В криэйт.
go_del=false
go_del=true
я сделал просто для перестраховки, чтобы цикл успел завершится. Не знаю, нужно это или нет. :D

Добавлено (31 октября 2016, 12:57)
---------------------------------------------
Извините, все работает сам затупил.
Теперь реальная проблема. Уничтожение то работает, то выдает ошибку

Push :: Execution Error - Variable Index [0,6] out of range [1,6] - -1.mass(100030,6)
at gml_Object_o_dest_StepNormalEvent_1 (line 7) - if mass[i]=0


В чем причина?

Добавлено (31 октября 2016, 13:33)
---------------------------------------------
ребят вот это я чет реально не понимаю, почему постоянно эту ошибку выдает только с разными индексами

Добавлено (31 октября 2016, 13:34)
---------------------------------------------
по идеи же, при уничтожении объекта массивы внутри тоже уничтожаются. А значит все проверки итд. проходят заного? ХЭЛП



Мой проект Drunk West! (заморожен)
https://gcup.ru/forum/9-99264-1

Мой проект Block Destroyer ( В разработке )
https://gcup.ru/forum/9-102818-1#764778


Сообщение отредактировал Глюк - Понедельник, 31 Октября 2016, 13:04
TymonrДата: Понедельник, 31 Октября 2016, 13:52 | Сообщение # 2
With OpenSource forever
Сейчас нет на сайте
Ничего они не уничтожаются. У тебя в массиве остается ссылка на несуществующий объект

Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
ГлюкДата: Понедельник, 31 Октября 2016, 13:56 | Сообщение # 3
Lampa Studio
Сейчас нет на сайте
Tymonr, Не понимаю. После уничтожения объекта вместе с ним должны удаляться и все массивы в нем, так же? или надо в дейтройе обнулять все ручками?


Мой проект Drunk West! (заморожен)
https://gcup.ru/forum/9-99264-1

Мой проект Block Destroyer ( В разработке )
https://gcup.ru/forum/9-102818-1#764778
TymonrДата: Понедельник, 31 Октября 2016, 15:44 | Сообщение # 4
With OpenSource forever
Сейчас нет на сайте
Код
1.mass(100030,6)

Этот 100030 - это просто рандомный индекс, который возникает в случае, когда ты обращаешься к тому месту в памяти, в котором больше ничего нет
Надо всегда делать проверку на то что объект был уничтожен, а не продолжать пытаться взаимодействовать с ним так, как если бы он был на месте


Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
ГлюкДата: Понедельник, 31 Октября 2016, 16:19 | Сообщение # 5
Lampa Studio
Сейчас нет на сайте
Tymonr, Блин. Направь хоть началом кода правильно. Не могу понять, как что проверять.

Что в этом массиве проверять, если в степе этого объекта записываются еще целые блоки. А в глобал релисиде уже дестроятся.
И код в степе не сработает, если нету коллизии с o_cubes1. Хотя.

Смотри, если засуну код из степа в объект o_cubes1 и буду из него обращаться к массивам проверяющего объекта, поставив в o_cubes1 переменную ограничитель, на одно исполнение. То получается ошибки возникать не должно?

Добавлено (31 октября 2016, 16:18)
---------------------------------------------
тогда возникает трудность с проверкой ближайшего объекта....

Добавлено (31 октября 2016, 16:19)
---------------------------------------------
слишком много запросов, каких то ненужных получается от объекта к объекту....Есть какой нибудь вариант более оптимизированный?



Мой проект Drunk West! (заморожен)
https://gcup.ru/forum/9-99264-1

Мой проект Block Destroyer ( В разработке )
https://gcup.ru/forum/9-102818-1#764778
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Выбор нескольких объектов и уничтожение.
  • Страница 1 из 1
  • 1
Поиск:

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