Четверг, 03 Июля 2025, 03:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Результаты поиска
GrannerДата: Пятница, 24 Июня 2016, 13:14 | Сообщение # 61 | Тема: Частицы и пауза
почетный гость
Сейчас нет на сайте
Иногда полезно выкладывать свои ляпсусы на общее обозрение. Увидел, что сохранение идет ДО изменения переменной, отвечающей за запуск обновления. Поменял местами сохрание и проверку файла - и все заработало. Не знаю, то ли это глюк, то ли так и надо. Пока счастлив...

Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Пятница, 24 Июня 2016, 12:50 | Сообщение # 62 | Тема: Частицы и пауза
почетный гость
Сейчас нет на сайте
Есть системы частиц для звезд и дыма. Они работают нормально, корректно уничтожаются при переходе в другую комнату, однако вся эта идиллия заканчивается на моменте, когда игроку приспичит поставить игру на паузу. Частицы благополучно скрываются, однако при снятии паузы (возвращении из главного меню) все эффекты частиц отсутствуют. Как я пытался делать после изучения справки:
Выход в главное меню (моя пауза)
Код

game_save("savegame.sbg");
if instance_exists(stars) // объект, где прописано создание типов, системы и генератора частиц "звезды"
  {
  stars.status=0;
  part_system_automatic_update(stars.ps,0)
  part_system_automatic_draw(stars.ps,0)
  }
room_goto(contin);
.
Возвращение в игру из главного меню - через game_load("savegame.sbg").
Включение обновления частиц через Draw объекта key_particles
Код
draw_sprite(key_part,-1,256,256);
if instance_exists(stars)
  {
  if stars.status=0
    {
    part_system_update(stars.ps);
    part_system_drawit(stars.ps);
    stars.status=1;
    }
  }

И вот тут результат - нулевой. Объекты key_paricles и stars находятся на месте, а частиц уже нет.
Также не совсем понимаю функции part_system_drawit(). Если она должна прописываться в рисовании какого либо объекта, не будет ли тут конфликта между изначально автоматическим обновлением частиц, ведь объект - также изначально в комнате, а делать его краткосрочным после перехода из главного меню и удалять у меня не получилось.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Среда, 25 Мая 2016, 17:48 | Сообщение # 63 | Тема: Обратить спрайт - для экономии ресурсов
почетный гость
Сейчас нет на сайте
Спасибо, Minskii. Плюсик в посылке.
Справку я, конечно, читаю, гражданин администратор. Но то что масштабирование размеров командой image_yscale и обращение спрайта связаны между собой - увы не было понятно.

P.S. И зачем тогда форум сделали? Посылали бы сразу в ... справку.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Среда, 25 Мая 2016, 13:48 | Сообщение # 64 | Тема: Обратить спрайт - для экономии ресурсов
почетный гость
Сейчас нет на сайте
Есть ли возможность в GM8 программно обратить спрайт по горизонтали или вертикали? Речь идет не о вращении спрайта через image_angle, а именно об обращении, как во встроенном в ГМ редакторе графики. Делаю платформер, накапливается много графики, анимации, поэтому проблема экономии ресурсов стоит достаточно остро.

Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Четверг, 19 Мая 2016, 09:49 | Сообщение # 65 | Тема: Как сделать падающую сосульку?
почетный гость
Сейчас нет на сайте
Возможно, есть такой вариант (алгоритмически, без кода):
1. При уничтожении сегмента ищем ближайший сегмент сверху, с координатами -y. Если он есть, меняем ему спрайт на спрайт с изломом (чтобы покрасивее было).
2. При этом же создаем невидимый объект высотой с сосульку, чьи координаты и размер позволяют перекрыть сегменты, находящиеся ниже уничтожаемого. Время существования этого объекта (аларм) - 1 тик шага.
3. В событии столкновения любого сегмента с этим невидимым объектом нужно заложить движение вниз. При достижении пределов комнаты уничтожаем сегмент и добавляем блекджек, разбрызгивающиеся лужи или нечто подобное.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Понедельник, 18 Апреля 2016, 19:33 | Сообщение # 66 | Тема: проигрывание анимации
почетный гость
Сейчас нет на сайте
Спасибо! За оперативность - плюсик smile С кодом - буду думать, как применить к своим условиям, ибо подобных анимаций у меня много.

Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Понедельник, 18 Апреля 2016, 18:42 | Сообщение # 67 | Тема: проигрывание анимации
почетный гость
Сейчас нет на сайте
Написал тут, чтобы не плодить похожую тему.
Остальные темы на форуме по анимации я уже просмотрел, и везде используется кнопочное событие "Завершение анимации", что мне не подходит. Есть ли другой, кодовый вариант этого события "Завершение анимации"?
Освещаю свою проблему...
Есть два спрайта: 1. str_intro - переключение оружия (анимация), 2. str_bomb - собственно герой с оружием (фактически это может последний кадр 1-ой анимации).
Задача:
Необходимо, чтобы анимация переключения оружия проигрывалась один раз, после чего ГГ меняет спрайт на спрайт 2 с оружием, который крутится в зависимости от point_direction.

Как пытался делать?
Вариант 1.
Код
sprite_index=str_intro;
image_index=0;
if image_index=15
    {
    sprite_index=str_bomb;
    image_index=0;
    image_angle=point_direction(x,y,mouse_x, mouse_y);
    }

Получается бесконечное проигрывание 1-ой анимации, а второй спрайт просто игнорируется.
Вариант 2.
Код
sprite_index=str_intro;
image_index=0;
for (i=0; i<16; i+=1)
    {
    image_index=i;
    if image_index=15
        {
        sprite_index=str_bomb;
        image_index=0;
        }
    }

Во втором варианте спрайт 1 пропускался напрочь и нормально проигрывался до бесконечности спрайт 2.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Суббота, 09 Апреля 2016, 14:09 | Сообщение # 68 | Тема: Столкновение и застревание объекта во время движения по пути
почетный гость
Сейчас нет на сайте
Цитата jayreck ()
не использовать твёрдость

Не использовать твердость - где? В главном персонаже, в препятствиях? И речь идет не об остановке, она и так есть, а о застревании на месте столкновения, например даже прямо в воздухе, при ударе о летающего противника. И это - при работающей гравитации.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Пятница, 08 Апреля 2016, 15:28 | Сообщение # 69 | Тема: Столкновение и застревание объекта во время движения по пути
почетный гость
Сейчас нет на сайте
Проблема:
При столкновении твердого объекта ГГ, двигающегося по пути, с любым другим твердым объектом - происходит застревание объекта ГГ на месте столкновения.
Необходимо:
При столкновении с любым твердым объектом у объекта ГГ путь должен заканчиваться (уничтожаться). Объект ГГ не должен застревать. На объект ГГ начинают действовать гравитация и вертикальная скорость.
Примечание:
Скорость пути - 60; путь создается программно из множества точек; в конце пути происходит нужное мне событие - и все это работает.
Как пытался делать через Step
Код
if (path_position>0 and path_position<1)
    {
    if !place_free(Braven.x+2, Braven.y)
        {
        Braven.path_position = path_positionprevious;
        path_delete(ogib);
        move_contact_solid(0,-1)
        move_bounce_solid(false);
        go=false;
        }
if (path_position==1)
    {
    vspeed=-12;
    go = false;
    path_delete(ogib);
    }


Есть ли тут иное решение?


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Пятница, 01 Апреля 2016, 17:14 | Сообщение # 70 | Тема: Конец пути и некнопочный path_endaction в GM 8.0
почетный гость
Сейчас нет на сайте
Цитата LunarPixel ()
А зачем там with Braven?

От безысходности smile И да, запускать путь через Create у меня не получится, путь создается на наборе случайных пользовательских координат. Но выход ясен и задача решена!:).

OpenGOO, LunarPixel - спасибо и плюсики за помощь.
Честно сказать, боюсь я Step перегружать. Кто может сказать - сколько проверок\действий можно загонять в Step без особого ущерба для производительности? А то у меня там на главном герое уже 6 и я начинаю в ужасе вибрировать smile А ведь еще и противник будет...


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Пятница, 01 Апреля 2016, 15:16 | Сообщение # 71 | Тема: Конец пути и некнопочный path_endaction в GM 8.0
почетный гость
Сейчас нет на сайте
Необходимо сделать, чтобы в конце пути происходило определенное событие (ну там смена спрайта, скачок объекта и пр.) Вроде бы все очевидно, но не работает либо вообще, либо событие происходит в начале пути, а не в конце. Пробовал следующим образом:
Вариант 1 (никакой реакции)
Код
path_start(ogib,80,0,true);
with Braven
    {
    if path_position=1
        {
        Braven.vspeed=-12;
        }
    }


Вариант 2 (через попытку найти координаты последней точки пути и проверку попадания на эти координаты)
Код
path_start(ogib,80,0,true);
nmb=path_get_number(ogib);
koorx=path_get_point_x(ogib,nmb-1); koory=path_get_point_y(ogib,nmb-1); // пробовал и через просто nmb, не nmb-1
if Braven.x = koorx and Braven.y = koory
    {
    Braven.vspeed=-12;
    {

Вариант 3 (на основе сайта yoyo)
Код
path_start(ogib,80,0,true);
if path_endaction=0
{
    Braven.vspeed=-12;
    {

В последнем варианте, разумеется, действие происходит, но в самом начале пути, а не в конце. Прошу помощи с проблемой.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Пятница, 01 Апреля 2016, 10:58 | Сообщение # 72 | Тема: За видом
почетный гость
Сейчас нет на сайте
Интернет, спасибо за наводку с id. На меня свалилось прозрение и проблема решена (в контексте моих требований) :)
Итак, движение быстрых слотов за видом (несколько экземпляров одного объекта):
Create объекта инвентаря inv:

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

End step объекта o_case:

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

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


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Вторник, 29 Марта 2016, 10:45 | Сообщение # 73 | Тема: За видом
почетный гость
Сейчас нет на сайте
Да, с lengthdir_x задержек нет, но и кнопки становятся неактивны, просто как чистые спрайты, нарисованные поверх объектов o_case.Может быть, есть другие варианты? Через id?

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


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


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


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


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


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


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Вторник, 15 Марта 2016, 11:54 | Сообщение # 76 | Тема: Конфликт между траекторией движения и гравитацией
почетный гость
Сейчас нет на сайте
Код перемещения из события E-key перенесен в степ объекта ГГ - и не работает. Результат аналогичный начальному.
И там не нажатие кнопки E, а удержание, то есть может быть степ тут и не нужен?


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Понедельник, 14 Марта 2016, 12:48 | Сообщение # 77 | Тема: Конфликт между траекторией движения и гравитацией
почетный гость
Сейчас нет на сайте
Цитата Tymonr ()
If skill.go if equal to true:D

Там просто еще событие было для отпускания E-key: skill.go=false (при отпускании клавиши гравитация и вертскорость возвращались в норму).
А насчет пихания в степ - попробую.


Лучше - быть, чем - казаться.
P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
GrannerДата: Понедельник, 14 Марта 2016, 11:32 | Сообщение # 78 | Тема: Конфликт между траекторией движения и гравитацией
почетный гость
Сейчас нет на сайте
GM 8 Pro
Есть необходимость заставить объект двигаться по созданной траектории, в зависимости от расстояния до ключевого объекта. Например, ГГ (главный герой) огибает угол по ровной кривой, радиус которой зависит от расстояния между ГГ и точкой угла.
Делал так:
Е-key
Код

x2=skill.x; y2=skill.y;
x1=krur.x; y1=krur.y;
rad=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
ugol=degtorad(10);                  
count=0;
rep=19;
for (i=1;i<rep; i+=1)               
    {                    
    yn=(rad*sin(ugol*i))+y1;        
    xn=(rad*cos(ugol*i))+x1;
       if xn>x2 {instance_create(xn, yn, kapl); count+=1;}
     }
for (i=0;i<count; i+=1)
    {
    near=instance_nearest(skill.x,skill.y,kapl)
    if near.x>skill.x
        {
        if place_free(near.x+2,near.y)
            {skill.x=near.x;
            skill.y=near.y;
            }
        }
    }

Создание траектории и движение ГГ (объекта skill) работает так, как мне нужно, НО!
При переносе в основной проект возникла проблема, ибо ГГ имеет гравитацию и вертикальную скорость. Решал эту проблему добавлением переменной skill.go=true; в вышеуказанный код.
А в Step ГГ добавлял проверку кнопками:
Код
if skill.go is equal to true
      set the gravity to 0 in direction 0
      set variable vspeed to 0

Получилось так - траектория создается нормально, при удерживании E-key ГГ зависает в воздухе (вроде как гравитация и вертикальна скорость отключены правильно), но не перемещается по траектории. Хотя видно, что в нужную сторону ГГ чуть-чуть смещается при каждом нажатии E-key.
Что делать?


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


Сообщение отредактировал Granner - Понедельник, 14 Марта 2016, 11:34
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

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