RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 ... 349 350 351 352 353 354 355 356 357 ... 359   Вниз
  Печать  
Ответы@Gmakers.ru — все вопросы сюда
0 Пользователей и 3 Гостей смотрят эту тему.
deathsoul
дезсоул
Ветеран форума
*****

Репутация: 548
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 853


21 Апреля 2011 в 01:14
Чтобы не было тем с вопросами, которые содержат всего два-три сообщения, все свои вопросы задавайтесь здесь. Если вопрос окажется слишком сложным для общей темы, модераторы всегда могут вынести обсуждение в отдельную тему.
Для этой темы действуют те же правила, что и для всего раздела, так что перед тем, как задать вопрос, обязательно ознакомьтесь с этой темой: «Ознакомьтесь, прежде чем задать вопрос». И не забудьте проверить, нет ли ответа на ваш вопрос в FAQ по Game Maker.
Последнее редактирование: 13 Октября 2013 в 19:01 от Огион
 
ГоК
Начинающий
Старожил
******

Репутация: 365
Offline Offline

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7041 28 Декабря 2016 в 11:52
Вроде да, должен перезаписать. Сделай тестовый файл и попробуй на нём.
Vovan1802
Активный участник
**

Репутация: 2
Offline Offline

Сообщений: 130

Ответ № 7042 05 Января 2017 в 16:15
подскажите, можно ли привязать объект к виду? Именно объект, а не спрайт. Нужно чтобы объект постоянно находился в углу экрана. Подскажите, как это сделать. Спасибо
Arsen96
Активный участник
**

Репутация: 4
Offline Offline

Сообщений: 135


Чем кривее руки, тем прикольней глюки

Ответ № 7043 05 Января 2017 в 16:39
x=view_xview[0]
y=view_yview[0]

Пишешь в   или   объекта
Vovan1802
Активный участник
**

Репутация: 2
Offline Offline

Сообщений: 130

Ответ № 7044 08 Января 2017 в 01:18
Такая ситуация: есть персонаж, для него есть разные анимационные спрайты. Есть спрайт атаки и спрайт прыжка. При нажатии на пробел рисуется спрайт атаки, при прыжке и при условии, что под персонажем нет твердой поверхности, рисуется спрайт прыжка. Но при нажатии на атаку в прыжке анимация странно скачет, как будто хочет выполнить два условия сразу. Можно как то поставить приоритет, чтоб если в прыжке нажать на атаку, рисовался бы спрайт атаки? Спасибо.
ГоК
Начинающий
Старожил
******

Репутация: 365
Offline Offline

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7045 09 Января 2017 в 11:30
Что-то вроде этого:
(код для Студии )
//spPlayerGround - спрайт на земле
//spPlayerAir - спрайт в воздухе
//spPlayerAttack - спрайт атаки

if( keyboard_check_pressed( vk_space ) && attack <= 0 )
    attack = sprite_get_number( spPlayerAttack );

var _prevSpr = sprite_index,
    _prevImg = image_index;
    
if( attack > 0 )
    {
    sprite_index = spPlayerAttack;
    attack -= image_speed;
    }
else if( place_free( x, y+1 ) )
    sprite_index = spPlayerAir;
else
    sprite_index = spPlayerGround;

if( sprite_index == _prevSpr )
    image_index = _prevImg;
Последнее редактирование: 09 Января 2017 в 11:38 от ГоК
Doctor_Hummer
Подозрительно
Активный участник
**

Репутация: 11
Offline Offline

Сообщений: 164


Боль

Ответ № 7046 18 Января 2017 в 15:35
Знаю, что прошу многого, но недавно возникла мысль создать инвентарь в моей Roguelike игре, чтобы собранные предметы отрисовывались на экране друг за другом, в зависимости от того в каком порядке были подобраны предметы. К примеру, есть три предмета - (например, лук-копье-меч).

Когда предмет подбирается переменная увеличивается на 1

Подбираем лук - он отрисовывается в (0,0), копье - в (32,0), меч - в (64,0)
Но если мы подберем их в другом порядке, например сначала лук(0,0), потом меч(32,0), а потом снова лук(64,0), то они отрисовываются в том же порядке.

Так вот. Как это реализовать?

Однако
Vovan1802
Активный участник
**

Репутация: 2
Offline Offline

Сообщений: 130

Ответ № 7047 18 Января 2017 в 15:48
Не знаю, может это сложно, но я сделал бы например так:
Создал бы глобальную переменную, допустим global.slot=0
При поднятии предмета делал бы проверку: если global.slot=0 то рисуем предмет в первой координате и прибавляем единицу к global.slot;
Если global.slot=1 то рисуем предмет во второй координате и опять же прибавляем единицу к global.slot;
ну и если global.slot=2 то рисуем предмет в третьей координате. И так далее
Doctor_Hummer
Подозрительно
Активный участник
**

Репутация: 11
Offline Offline

Сообщений: 164


Боль

Ответ № 7048 18 Января 2017 в 16:25
Не знаю, может это сложно, но я сделал бы например так:
Создал бы глобальную переменную, допустим global.slot=0
При поднятии предмета делал бы проверку: если global.slot=0 то рисуем предмет в первой координате и прибавляем единицу к global.slot;
Если global.slot=1 то рисуем предмет во второй координате и опять же прибавляем единицу к global.slot;
ну и если global.slot=2 то рисуем предмет в третьей координате. И так далее
В том то и дело, что предметы разные и рисовать их надо каждый раз по разному и в разном порядке

Однако
Vovan1802
Активный участник
**

Репутация: 2
Offline Offline

Сообщений: 130

Ответ № 7049 18 Января 2017 в 16:39
Так в чем проблема? Глобальную переменную создай в отдельном невидимом объекте (не забудь добавить его в комнату)
Теперь в объекте, например меча. При столкновении с персонажем (ведь при столкновении с персонажем он поднимается?) идёт проверка чему ровна та глобальная переменная: если 0- то рисуется объект в точке A, если 1- то в точке B, если 2- то в точке C и после рисования прибавляется единица к глобальной переменной. Такое же условие и в объекте лук и т. д. Так вот, если ты изначально берёшь меч, сработает проверка, что переменная равна 0 и меч нарисуется в точке А, потом берём лук, переменная уже равна 1, так что лук нарисуется  в точке B. И так в любом порядке
Огион
Завсегдатай
****

Репутация: 131
Offline Offline

Сообщений: 957


Ответ № 7050 18 Января 2017 в 16:58
Используй список. Подбираешь предмет — добавляешь его идентификатор в список, выбрасываешь — удаляешь. Чтобы вывести предметы на экран, проходишься по всем элементам списка.
Идентификатор — это число, которое будет обозначать предмет, например: лук — 0, копьё — 1, меч — 2. Можно объявить их как константы, а в GMS можно использовать перечисление (enum).
Последнее редактирование: 19 Января 2017 в 10:22 от Огион
Doctor_Hummer
Подозрительно
Активный участник
**

Репутация: 11
Offline Offline

Сообщений: 164


Боль

Ответ № 7051 19 Января 2017 в 08:58
И ещё один вопрос, с которым я довольно долго мучался.. связан он с платформами.

Раньше я использовал код в Step платформы, чтобы она становилась твёрдой если игрок выше и неосязаемой если ниже платформы. Но это создавало некоторые проблемы, вроде застревающих в платформах монстрах когда они в твердом состоянии и прочего.

Я попробовал перенести этот момент на столкновение с платформой игрока, в итоге получось что-то вроде этого

if (y<other.y || ssost=0)
{
other.solid=true
if other.solid=true
{
        move_contact_solid(direction, xspeed);
        up = 0;
    vspeed = 0;
    }
}
else
if (y>=other.y || ssost=1)
{other.solid=false}
*ssost-временное состояние позволяющее проходить платформы насквозь и используется мной для спрыгивания

Но платформы просто игнорируют код, они всегда твёрдые, независимо от того где находится игрок.
Убирал/ставил обычный блок ему в качестве родителя, помещал код в Step и т.д., блок всё равно всегда твёрдый.
Где я мог допустить ошибку? о:

P.S. Использую код в событии столкновения потому что только так смогу проверить эту платформу а не все платформы на экране

Однако
tolich
to ne lich
Ветеран форума
*****

Репутация: 214
Offline Offline

Сообщений: 1 486


moonlite

Ответ № 7052 19 Января 2017 в 09:34
>> if (y<other.y || ssost=0)
У тебя ssost==0 означает отсутствие временного сосотояния? Тогда должно быть if (y<other.y && ssost=0). В этом случае проверять условие (y>=other.y || ssost=1) нет необходимости, достаточно else (если, конечно, ты не планируешь делать ssost=2 или 3 для каких-то странных целей).
>> other.solid=true
>> if other.solid=true
Устанавливать условие истинным и тут же его проверять - плохая практика. Это ж простая переменная. Что там может пойти так, что после присваивания переменная тут же окажется не равной присвоенному значению?
Итожа:
if (y<other.y && ssost=0){
  other.solid=true;
  move_contact_solid(direction, xspeed);
  up = 0;
  vspeed = 0;
}
else{
  other.solid=false
}

Doctor_Hummer
Подозрительно
Активный участник
**

Репутация: 11
Offline Offline

Сообщений: 164


Боль

Ответ № 7053 19 Января 2017 в 10:18
Я попробовал, всё равно блоки твёрдые всегда.. убрал ssost из этого фрагмента, чтобы проверить, тоже не получилось. И у самой платформы галочка с solid снята.

Однако
Hamster099
Новичок


Репутация: 0
Offline Offline

Сообщений: 9


Ответ № 7054 21 Января 2017 в 14:28
Имхо, solid вообще не стоит использовать. Лучше при контакте занулять вертикальную скорость и циклом "выдавливать" объект вверх по координате х, пока коллизия не прекратится
Макасин
[s]
Младший администратор
Старожил
******

Репутация: 341
Offline Offline

Награды:
Легенда сайта
Сообщений: 4 249


[/s]

Ответ № 7055 04 Февраля 2017 в 00:59
Можно ли удалить частицы определенного типа в заданном диапазоне координат или созданные из одного объекта?

Энтузиазм нашему форуму чужд. Sad but true.
Ogion.
Огион
Завсегдатай
****

Репутация: 131
Offline Offline

Сообщений: 957


Ответ № 7056 04 Февраля 2017 в 01:11
В классических GM есть уничтожители. Чтобы они уничтожали только определённые частицы, нужно вынести их на отдельную систему частиц.
А в GMS можно реализовать всё это объектами. Утверждается, что в нём большое количество объектов не так бьёт по производительности.
tolich
to ne lich
Ветеран форума
*****

Репутация: 214
Offline Offline

Сообщений: 1 486


moonlite

Ответ № 7057 04 Февраля 2017 в 01:14
Насколько я знаю, нельзя. Но что можно делать - это использовать несколько систем частиц. Тогда их можно очищать от частиц или отключать/включать им обновление и отрисовку независимо.

Макасин
[s]
Младший администратор
Старожил
******

Репутация: 341
Offline Offline

Награды:
Легенда сайта
Сообщений: 4 249


[/s]

Ответ № 7058 04 Февраля 2017 в 14:07
А в GMS можно реализовать всё это объектами. Утверждается, что в нём большое количество объектов не так бьёт по производительности.
Собственно, сперва и сделал объектами, как в старые добрые времена, когда не умел в частицы, потом начал волноваться о производительности и не нашел в справке уничтожителей. Значит пока оставлю как есть. Спасибо!

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

Энтузиазм нашему форуму чужд. Sad but true.
Ogion.
tolich
to ne lich
Ветеран форума
*****

Репутация: 214
Offline Offline

Сообщений: 1 486


moonlite

Ответ № 7059 04 Февраля 2017 в 15:22
Не зарекайся. Несколько - не по пять штук на объект, а, скажем, в Mikro 3D используется 2 системы, одна поверх интерфейса, другая для пятен крови в 3d.

ELGReeN
Активный участник
**

Репутация: 8
Offline Offline

Сообщений: 122


Ответ № 7060 14 Февраля 2017 в 15:42
Можно как то поменять 1 пиксель в спрайте / бэкграунде без применения сурфейса? (с сурфейсом эта операция ограничена, утечка памяти при многократном пересоздании сурфейса)
Написал - прочитал, понял что можно попробовать не пересоздавать сурфейс.
Последнее редактирование: 14 Февраля 2017 в 15:50 от ELGReeN

Страниц: 1 ... 349 350 351 352 353 354 355 356 357 ... 359   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru