Как загружать картинки для обьектов?

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Как загружать картинки для обьектов?

Страницы: 1  новая тема

Автор Сообщение

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 17-03-2006 17:15
Вопрос такой - допустим у меня есть обьекты 1, 2 и 3 - нужно загрузить для них отдельные изображения в процессе игры, отдельно для каждого свою картинку - это можно сделать, а можно ли сделать так, что бы для 1 обьекта из картинки была взята верхняя её часть, для 2 - середина, а для 3 - низ этой же самой картинки? Как в тайлах... Никто не знает как сделать?

магистр
Группа: Сообщество GM
Сообщений: 462
Добавлено: 17-03-2006 18:04
то есть использовать стрипы? есть стрип, и в игре этот стрип по частям7 есть способ, но долго реализовывать, за то мощно крайне
Есть такая штука, загружаешь нужный тайл как бакгроунд(фон). Потом преобразовываешь в тайл (ну не наю, фоны по умолчанию тайлы). И! после этого рабоатешь с этим тайлом. то есть каждый объект рисует нужный квадратик тайла, там есть такие функции.

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 17-03-2006 18:57
Спасиб... Идея понятна - пойду смотреть что там и как... Эх - пример бы (с моим знанием гмл только самому и разбираться :о)...

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 17-03-2006 21:37
Нашёл вот что:

sprite_add(fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig) Добавляет изображение сохранённое в файле с именем fname в набор спрайтовых ресурсов. Для этого доступны только bmp, jpg и gif изображения. Когда изображение является bmp или jpg, то такое изображение может быть стрипом, содержащим множество частей изображений для спрайта. Используйте imgnumb, чтобы указать их число (1 для одиночного изображения). Для (анимированных) gif изображений этот аргумент не используется, так как gif файл использует определённое количество изображений. precise - указывает, должна ли использоваться проверка точного столкновения. transparent - указывает прозрачность изображения. smooth - указывает сглаживание краёв. preload - указывает предварительную загрузку изображения в память. xorig и yorig - указывают первоначальную позицию спрайта. Функция возвращает индекс нового спрайта, который Вы можете затем использовать, чтобы его нарисовать, или использовать для этого переменную sprite_index. Когда происходит ошибка - возвращается -1.
sprite_replace(ind,fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig) Также как и выше, но в этом случае, спрайт с индексом ind заменяется. Функция возвращает, если успешна.


Вроде делаю как написано - ничего не получается... Если просто заменить 1 спрайт на другой, который есть в игре, то получается, а если загружать его из "вне" - не получается...

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 18-03-2006 11:12
прально, нужно просто создать пустые спрайты в игре, а потом спрайт_реплэйсом их менять.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 18-03-2006 12:23
У меня почему то работало, sprite=sprite_add(...).
sprite_index=sprite работает, в чём проблема?

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 18-03-2006 21:29
sprite_add(fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig) Добавляет изображение сохранённое в файле с именем fname в набор спрайтовых ресурсов. Для этого доступны только bmp, jpg и gif изображения. Когда изображение является bmp или jpg, то такое изображение может быть стрипом, содержащим множество частей изображений для спрайта. Используйте imgnumb, чтобы указать их число (1 для одиночного изображения). Для (анимированных) gif изображений этот аргумент не используется, так как gif файл использует определённое количество изображений. precise - указывает, должна ли использоваться проверка точного столкновения. transparent - указывает прозрачность изображения. smooth - указывает сглаживание краёв. preload - указывает предварительную загрузку изображения в память. xorig и yorig - указывают первоначальную позицию спрайта. Функция возвращает индекс нового спрайта, который Вы можете затем использовать, чтобы его нарисовать, или использовать для этого переменную sprite_index. Когда происходит ошибка - возвращается -1.

sprite_replace(ind,fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig) Также как и выше, но в этом случае, спрайт с индексом ind заменяется. Функция возвращает, если успешна.



Вопросы:

1) Изображение где должно храниться - в папке с готовым экзешником? И как его прописывать в скобках - sprite_add(pichter.bmp,imgnumb,precise,transparent,smooth,preload,xorig,yorig)
2) У меня стрипы - Используйте imgnumb, чтобы указать их число (1 для одиночного изображения). Это как понимать? У меня картинка 300 на 300 всего 36 спрайтов 50 на 50 - это число будет 36 или для каждого спрайта своё?
3) Как фон загрузить из папки с игрой в саму игру? Не могу это сделать - знание ГМЛ подводит :*(

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 18-03-2006 22:18
Могу уже загрузить фон из папки и спрайт, а вот если спрайт гружу из фона, то спрайт становится такого же размера, как и фон... Со стрипами не получается...

Что такое ind?

Если я меняю его на название спрайта какого-нить, то у меня начинают хаотично загружаться разные спрайты, которые я в игре использую... По 1, а то и по 3-4 за один раз...

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 18-03-2006 22:29
когда грузишь пишишь направление в кавыках допустим в папке с ехе
есть папка back, там sky.bmp.
sprite_add('back/sky.bmp',...)

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 19-03-2006 07:44
не надо делать sprite_add. заранее создай все спрайты в игре. где то у нас на форуме я прочитал очень везкую причину делать именно так, запомнил это и никогда не делаю по другому. Да и по сути так выглядеть будет лучше исходник - все что будет в игре, все есть.
Потом sprite_replace(имя_спрайта_в_игре, имя_граф_файла_снаружи, точность, прозрачность, сглаживание и т.д. ). Имя файла извне можно указывать и с папками, т.е. "pics/sprite.jpg". Кстати, по-моему xorig и yorig не устанавливались спрайт_реплэйсом в 6.0, это баг был такой. в 6.1 не знаю.

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 19-03-2006 07:44
да кстати, вот хотя бы одна причина не создавать спрайты кодом - время тратить при загрузке игры.

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 19-03-2006 13:20
цЫтата: Кстати, по-моему xorig и yorig не устанавливались спрайт_реплэйсом в 6.0, это баг был такой. в 6.1 не знаю.

Точно - у меня не устанавливаются - всё время одни и те же координаты, что бы я не ставил...

У меня в игре, допустим, паззлы, и пользователь захочет картинку свою поместить в папку, а там её уже можно будет в игру загрузить... Вот только от реализации это далеко - а вставить в игру уже готовый набор паззлов - это конечно можно, но выбора уже не будет :*(

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 19-03-2006 13:36
ну и что сложного? делаешь sprite_replace, размеры то все время новые будут.

магистр
Группа: Сообщество GM
Сообщений: 462
Добавлено: 19-03-2006 17:31
сначала sprite_add, а уже потом sprite_replase, тогда пустые спрайты не нужны в игре. Но тогда нужно глобальный переменные, хотя это и удобно.

магистр
Группа: Сообщество GM
Сообщений: 443
Добавлено: 19-03-2006 20:31
Еще раз повторяю, куда более рациональный вариант - спрайты создать в самой игре, пустые спрайты! затем реплэйсить. Тогда на создание не тратится время при загрузке игры. Да и вообще красивее так.

гроссмейстер
Группа: Сообщество GM
Сообщений: 148
Добавлено: 21-03-2006 17:02
splean, Я так и сделаю...

Да, кстати, если я загружаю из папки рисунок фона background0, а потом делаю:
sprite_index=tile_add(background0,0,0,50,50,self.x,self.y,0)
То всё выходит как нужно, кроме одного - обьект превращается в неподвижный тайл... Вот если бы спрайт брал рисунок тайла, но при этом сам не превращался в него, а сохранял свои функции, то всё бы было хорошо... Я бы смог для каждого спрайта загрузить часть картинки background0...

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 11-04-2006 00:37
sprite_index=имя любого спрайта для объекта

Дополнительное уродование спрайта:
Смотри русский хелп,там всё есть:загрузка спрайта из файла,менять спрайт,обрезать,наизнанаку вывернуть.........

Страницы: 1  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Как загружать картинки для обьектов?

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU