Четверг, 21 Ноября 2024, 22:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Достижения
toby3dДата: Среда, 08 Февраля 2012, 20:19 | Сообщение # 1
One-Aloner
Сейчас нет на сайте
Всем снова здравствуйте. smile

Сейчас меня очень интересует реализация такой детали многих игр как "достижения" (ачивменты).
Мне необходимо сделать так, чтобы при определённом значении глобальной переменнной, в левом нижнем углу появлялась небольшая табличка с динамической надписью (название достижения).
И всё бы ничего, если бы достижения были редкими (1-2 за игру), но в моём проекте есть возможность получения сразу несколько ачивок в один и тот же момент.
1) Как сделать так, чтобы достижение, которое ещё не успело исчезнуть с экрана, поднималось чуть выше достижения, полученного позже, т.е. как бы выползало списком?
2) Как, пользуясь одним спрайтом и динамической надписью заставить писать нужный текст при достижении глобальной переменной определённого значения? Учитывая, что будут появляться сразу несколько копий этих объектов и в каждой динамической надписи должен быть свой текст.

Заранее благодарю за ответ.




Сообщение отредактировал toby3d - Среда, 08 Февраля 2012, 20:34
SanchesДата: Среда, 08 Февраля 2012, 21:37 | Сообщение # 2
участник
Сейчас нет на сайте
1)События:
Sprite - Is overlaping at offset - Sprite, X-offset=0, Y-offset=2
Sprite - pick top-most
Every 50 miliseconds
Действие:
Sprite - Set position X=Sprite.X, Y=Sprite.Y-1

2)Добавляешь в игру объект Text.
Ищешь у спрайта вкладку Container, находится под вкладкой Groups.
Добавляешь объект текста в контейнер, теперь при создании спрайта автоматически будет создаваться текст.
В редакторе событий делаешь примерно так:
Событие:
Always.
Действие:
Text - set position another object - Спрайт достижения.

Ещё событие:
Достижение получено (не знаю, как у тебя оно получается, но отследить момент сможешь, наверное)
Под-событие:
Достижение = достижение номер 192 (или какое получено)
Действие к под-событию:
System - create object Спрайт достижения (позицию создания ставишь какую нужно тебе)
Text - Set text - "Достижение номер 192 получено!"

Должно работать. Если что обращайся)
toby3dДата: Среда, 08 Февраля 2012, 22:02 | Сообщение # 3
One-Aloner
Сейчас нет на сайте
Quote (Sanches)
Достижение получено (не знаю, как у тебя оно получается, но отследить момент сможешь, наверное)

Событие:
System - Compare global variable - Combo100 Equal to 1
Действие:
Вот тут поподробнее. Все достижения имеют свою глобальную переменную, которые имеют лишь два значения (0 - не получено; 1 - достигнуто).

Ах да, как сделать объект с текстом глобальным, чтобы они появлялись во всех "комнатах"? Галку "Global" в настройках объектов поставил, но в других комнатах они не отображаются на рабочем поле. :(
С этим разобрался.




Сообщение отредактировал toby3d - Среда, 08 Февраля 2012, 22:25
SanchesДата: Четверг, 09 Февраля 2012, 14:12 | Сообщение # 4
участник
Сейчас нет на сайте
Тогда не надо делать под-события, просто создавай спрайт достижения и меняй текст.
toby3dДата: Четверг, 09 Февраля 2012, 15:22 | Сообщение # 5
One-Aloner
Сейчас нет на сайте
Quote (Sanches)
просто создавай спрайт достижения и меняй текст.

Тогда при получение нескольких ачивок, все тексты на них меняются на название последней полученной.

Может вам в ЛС отправить исходник?


SanchesДата: Четверг, 09 Февраля 2012, 18:56 | Сообщение # 6
участник
Сейчас нет на сайте
Просто добавь под-событие (оно всё-таки нужно=)).
В нём пиши:
Text - Pick closest to Sprite.X, Sprite.Y
Это нужно поставить под событием получения достижения.
И уже в этом подсобытии меняй текст на нужный.
toby3dДата: Четверг, 09 Февраля 2012, 19:06 | Сообщение # 7
One-Aloner
Сейчас нет на сайте
Quote (Sanches)
Pick closest to Sprite.X, Sprite.Y

Такого действия я не обнаружил. о_о


SanchesДата: Пятница, 10 Февраля 2012, 13:22 | Сообщение # 8
участник
Сейчас нет на сайте
Это событие, я тоже сначала не понял.
toby3dДата: Пятница, 10 Февраля 2012, 16:10 | Сообщение # 9
One-Aloner
Сейчас нет на сайте
Quote (Sanches)
Это событие, я тоже сначала не понял.


Где это событие? ._.


SanchesДата: Пятница, 10 Февраля 2012, 19:19 | Сообщение # 10
участник
Сейчас нет на сайте
Не знаю)) Видимо, нужно несколько объектов на уровне.
Попробуй тогда Pick by comprassion, пикать объект у которого Y-позиция равна Y-позиции спрайта, или Y Imagepoint'a, к которому привязан текст.
Или просто Sprite - Os overlaping another object - Text


Сообщение отредактировал Sanches - Пятница, 10 Февраля 2012, 19:20
toby3dДата: Понедельник, 20 Февраля 2012, 22:34 | Сообщение # 11
One-Aloner
Сейчас нет на сайте
Quote (Sanches)
Sprite - Os overlaping another object - Text

Теперь вообще ничего не работает. :С
Посмотрите исходник, который я вам выслал в ЛС.

Всё, разобрался, надо было создавать текст, а потом уже графическую часть достижения.

Добавлено (20.02.2012, 22:34)
---------------------------------------------
Новый вопрос: Как сделать страницу с достижениями (название+краткое описание), желательно с прокруткой?




Сообщение отредактировал toby3d - Понедельник, 20 Февраля 2012, 22:34
vicu2010Дата: Вторник, 21 Февраля 2012, 00:03 | Сообщение # 12
Сейчас нет на сайте
Quote (toby3d)
Где это событие? ._.

Попробуй это-же но для условия always например... Т.е. ищи объект в экшнах а не в условиях, пример:
always - нужное условие к нужному объекту.



Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
toby3dДата: Суббота, 09 Июня 2012, 21:18 | Сообщение # 13
One-Aloner
Сейчас нет на сайте
Quote (vicu2010)
Попробуй это-же но для условия always например... Т.е. ищи объект в экшнах а не в условиях, пример:
always - нужное условие к нужному объекту.

Уже решено до вас.

Добавлено (09.06.2012, 21:18)
---------------------------------------------
До сих пор бьюсь над прокручиваемым списком достижений. sad


allxumukДата: Воскресенье, 10 Июня 2012, 12:19 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (toby3d)
До сих пор бьюсь над прокручиваемым списком достижений.

А в чём проблема? тыц
Левой кнопкой добавляешь "ачивки", колёсиком прокручиваешь.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
toby3dДата: Воскресенье, 10 Июня 2012, 17:06 | Сообщение # 15
One-Aloner
Сейчас нет на сайте
Quote (allxumuk)
колёсиком прокручиваешь.

А можно как-нить создать полосу прокрутки из линии и спрайта с поведением Drag and Drop?

Осталась ещё одна проблема:
С помощью Array я по строке X записываю номер ачивмента и его выполнение (yes/no) или число.
Мне необходимо, что выполненный ачивмент больше не активировался заного в следующих сеансах игры и сохранялся в файле как уже выполеннный.

Например, ачивка даётся за запуск игры: при первом запуске я пишу в 1-ю X ячейку Array значение "yes" и на экране появляется соответствующая табличка с надписью о полученном достижении. Ачивка считается полученной, соответствующая активная табличка будет висеть в списке ачивок.
После, табличка не должна выскакивать при последующих запусках игры, а значение не должно заново прописываться в Array, чтобы достижение вновь считалось выполненой.




Сообщение отредактировал toby3d - Воскресенье, 10 Июня 2012, 17:35
allxumukДата: Воскресенье, 10 Июня 2012, 21:20 | Сообщение # 16
старожил
Сейчас нет на сайте
Quote (toby3d)
А можно как-нить создать полосу прокрутки из линии и спрайта с поведением Drag and Drop?

Да не вопрос: тыц

Quote (toby3d)
С помощью Array я по строке X записываю номер ачивмента и его выполнение (yes/no) или число.
Мне необходимо, что выполненный ачивмент больше не активировался заного в следующих сеансах игры и сохранялся в файле как уже выполеннный.

Собственно нужно периодически пробегать по массиву и проверять выполненность условий и была ли ачивка выдана, в чём проблема?


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
toby3dДата: Вторник, 12 Июня 2012, 11:32 | Сообщение # 17
One-Aloner
Сейчас нет на сайте
Quote (allxumuk)
Собственно нужно периодически пробегать по массиву и проверять выполненность условий и была ли ачивка выдана, в чём проблема?

С Array начал работать недели 2 назад, ещё не совсем понимаю его работу, проверку и всё такое.
Пока научился только сохранять данные и прописывать переменные. sad

Добавлено (11.06.2012, 16:29)
---------------------------------------------
Вот кусок скрипта выполнения ачивки:

Добавлено (12.06.2012, 11:32)
---------------------------------------------
Попробовал периодически загружать Array. Все ачивки как будто сбрасываются. sad




Сообщение отредактировал toby3d - Понедельник, 11 Июня 2012, 16:29
allxumukДата: Вторник, 12 Июня 2012, 12:18 | Сообщение # 18
старожил
Сейчас нет на сайте
Вот пример с простейшим способом проверки полученности ачивок.

Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
toby3dДата: Вторник, 12 Июня 2012, 13:09 | Сообщение # 19
One-Aloner
Сейчас нет на сайте
Quote (allxumuk)
Вот пример с простейшим способом проверки полученности ачивок.

ДА! То что надо! СПАСИБО!
+ вам в копилочку! smile


  • Страница 1 из 1
  • 1
Поиск:

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