Четверг, 28 Марта 2024, 16:39

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » За видом
За видом
TaDaDaPamДата: Пятница, 01 Ноября 2013, 18:55 | Сообщение # 1
частый гость
Сейчас нет на сайте
Как сделать, чтоб несколько объектов следовали за видом, но оставались в своем же положении на экране?
LunarPixelДата: Пятница, 01 Ноября 2013, 19:05 | Сообщение # 2
старожил
Сейчас нет на сайте
Сколько можно мусолить этот вопрос.

В end step у каждого объекта пиши:
Код
x = view_xview[0]+смещение
y = view_yview[0]+смещение


TaDaDaPamДата: Пятница, 01 Ноября 2013, 19:07 | Сообщение # 3
частый гость
Сейчас нет на сайте
LunarPixel, а что, если это один и тот же объект, но там несколько экземпляров?
LunarPixelДата: Пятница, 01 Ноября 2013, 20:13 | Сообщение # 4
старожил
Сейчас нет на сайте
Вычисляй для каждого экземпляра свое смещение, относительно вида. Как то так:

Код
x1=xstart-view_xview[0]
y1=ystart-view_yview[0]


ну и используй это смещение в коде выше.

Код
x = view_xview[0]+x1
y = view_yview[0]+y1


GrannerДата: Понедельник, 28 Марта 2016, 12:05 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Подыму эту древнюю тему все с тем же замусоленным, но не менее актуальным вопросом (особенно в контексте 3-го поста ТС):
как сделать следование за видом нескольких экземпляров одного объекта, чтобы не было видимых задержек?
Пометка: это кнопки меню (слоты умений), которые должны быть не просто спрайтами, а активными кнопками. Спрайты этих кнопок меняются в зависимости от команд игрока. (Мой спрайто-хелсбар работает как часы, но это совсем другое).
Как делал:
объект инвентарь создает кнопки (в Create инвентаря):


В Draw объекта кнопок:


В End Step объекта кнопок:


Вроде и отрисовывается, но задержка всегда есть. Перебрал кучу вариантов, но тогда inv.cell[i] не работает, а на нем завязан уже работающий код типа if inv.cell[i].sprite_index = but_clear ... Может быть здесь надо как-то обращаться к id объекта, но в справке я так и не понял, как выявить id создаваемого объекта o_case, чтоб потом его двигать за видом. Буду благодарен за любую помощь!


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
ИнтернетДата: Понедельник, 28 Марта 2016, 12:41 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Цитата Granner ()
cell[0]=instance_create(view_xview[0]+352,view_yview[0]+560,o_case);
cell[1]=instance_create(view_xview[0]+392,view_yview[0]+560,o_case);
cell[2]=instance_create(view_xview[0]+432,view_yview[0]+560,o_case);
cell[3]=instance_create(view_xview[0]+472,view_yview[0]+560,o_case);
cell[4]=instance_create(view_xview[0]+512,view_yview[0]+560,o_case);
cell[5]=instance_create(view_xview[0]+552,view_yview[0]+560,o_case);
cell[6]=instance_create(view_xview[0]+592,view_yview[0]+560,o_case);
cell[7]=instance_create(view_xview[0]+632,view_yview[0]+560,o_case);
делал через for, но почему-то не срабатывает, так что не кидайтесь тапками)

А не так разве?
Код
for(kol=0;kol<8;kol+=1){
instance_create(view_xview[0]+kol*40,view_yview[0]+560,o_case)}

В другом объекте не в !!! o_case


Сообщение отредактировал Интернет - Понедельник, 28 Марта 2016, 12:42
GrannerДата: Понедельник, 28 Марта 2016, 12:45 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Интернет, спасибо! Но именно так я и делал и все работало как часы, но это было еще ДО того, как решили делать игру с видами, а не в статике.
...
Увидел сообщение - что значит в другом объекте? Я же создаю o_case в Create объекта inv. Поясните, пожалуйста.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку


Сообщение отредактировал Granner - Понедельник, 28 Марта 2016, 12:47
ИнтернетДата: Понедельник, 28 Марта 2016, 13:27 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Цитата Granner ()
Увидел сообщение - что значит в другом объекте? Я же создаю o_case в Create объекта inv. Поясните, пожалуйста.

Да всё правильно просто цикл по созданию объекта нельзя ставить в этот же объект.

Добавлено (28 марта 2016, 13:27)
---------------------------------------------
Ну тогда используй
Код
lengthdir_x(len,dir)
вместо len поставь 0 а вместо dir view_xview[0]. При поворотах вида будет возвращать горизонтальный компонент вектора то есть смещение 0.
Ну да всё работает пишу в Draw
Код
for(kol=0;kol<8;kol+=1){
draw_sprite_ext(sprite_index,image_index,view_xview[0]+kol*40,view_yview[0]+560,image_xscale,image_yscale,image_angle,image_blend,image_alpha);
x=lengthdir_x(0,view_xview[0])
y=view_yview[0]
}


Сообщение отредактировал Интернет - Понедельник, 28 Марта 2016, 13:30
GrannerДата: Вторник, 29 Марта 2016, 10:45 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Да, с lengthdir_x задержек нет, но и кнопки становятся неактивны, просто как чистые спрайты, нарисованные поверх объектов o_case.Может быть, есть другие варианты? Через id?

Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
ИнтернетДата: Вторник, 29 Марта 2016, 11:56 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Ну тогда не знаю.
Могу предложить только.
Сделать кнопку одним объектом, расплодить его экземпляры и каждому присвоить свой image_index. И при нажатии проверять
Код
position_meeting(mouse_x,mouse_y,self)
позицию курсора и в зависимости какой стоит image выполнять нужное действие.

И ещё вот пример http://forum.hellroom.ru/index.php?topic=4064.0 (там производится отрисовка ячеек (можно подстроить под кнопки))


Сообщение отредактировал Интернет - Вторник, 29 Марта 2016, 12:04
GrannerДата: Пятница, 01 Апреля 2016, 10:58 | Сообщение # 11
почетный гость
Сейчас нет на сайте
Интернет, спасибо за наводку с id. На меня свалилось прозрение и проблема решена (в контексте моих требований) :)
Итак, движение быстрых слотов за видом (несколько экземпляров одного объекта):
Create объекта инвентаря inv:

Create объекта o_case (те самые быстрые слоты):

End step объекта o_case:

И финальная часть решена через свитч по id создаваемых объектов o_case -
Draw объекта o_case (Ликвидация задержек следования за видом):

Подозреваю, есть более корректное решение, но данный код меня устраивает: задержек нет, кнопки - активны (я там по ним ПКМ и цифрами перещелкиваю).


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » За видом
  • Страница 1 из 1
  • 1
Поиск:

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