diff --git a/src/community/docsGames.js b/src/community/docsGames.js index c035355..678342c 100644 --- a/src/community/docsGames.js +++ b/src/community/docsGames.js @@ -335,12 +335,12 @@ export const GAMES = [ previewShot: 'guide-dynamic-label-scene.png', openProjectId: 2261, ready: true }, { id: 'guide-zavod', num: 58, group: 'g5', stars: 2, icon: 'cart', title: 'Мой завод — расстановка предметов (placement)', - desc: 'Tycoon-механика «купи → поставь»: магазин-инвентарь снизу, клик по слоту → полупрозрачная тень предмета летит за курсором, ЛКМ ставит на свой участок (можно стопкой), R/колесо — поворот, ПКМ/Esc — отмена. Денег мало → слот серый. Воксельный мир: трава, деревья, пруд.', + desc: 'Tycoon-механика «купи → поставь»: магазин-инвентарь снизу, тень предмета за курсором, ЛКМ ставит на участок (можно стопкой), нет денег → слот серый.', mechanics: ['game.placement.start', 'game.inventoryUi (магазин-слоты)', 'onPlace/onCancel/onMove', 'тень-превью формой модели', 'снап к сетке + стопка', 'проверка баланса (не в минус)', 'воксельные модели + ландшафт'], previewShot: 'guide-zavod-scene.png', openProjectId: 2345, ready: true }, { id: 'guide-taxi', num: 59, group: 'g5', stars: 2, icon: 'loader', title: 'Такси-босс — экран загрузки между мирами', - desc: 'Программный экран загрузки (как в Roblox при телепорте): кликнул такси → весь экран плавно затемняется, в центре снимок сцены, жёлтый прогресс-бар заполняется за 4с, процент, кнопка «Пропустить», спиннер «Загрузка». Дальше — телепорт в город и закатное небо. В городе кнопка «Магазин» делает короткий переход.', - mechanics: ['game.loading.transition (Promise)', 'game.loading.show (хэндл setProgress/close)', 'cover: sceneSnapshot (снимок сцены)', 'прогресс-бар + процент + спиннер', 'кнопка «Пропустить» (onSkip)', 'blockInput + пауза симуляции', 'воксельный город (такси/небоскрёбы)'], + desc: 'Три локации (гараж · город · магазин), между ними — красивый экран загрузки с прогресс-баром, спиннером и кнопкой «Пропустить», как в Roblox при телепорте.', + mechanics: ['game.loading.transition (Promise)', 'game.loading.show (хэндл setProgress/close)', 'cover: sceneSnapshot (снимок сцены)', 'прогресс-бар + процент + спиннер', 'кнопка «Пропустить» (onSkip)', 'blockInput + пауза симуляции', '3 локации = телепорт + смена окружения', 'воксельный город + интерьер магазина'], previewShot: 'guide-taxi-scene.png', openProjectId: 2427, ready: true }, ]; diff --git a/src/community/docsLessons.jsx b/src/community/docsLessons.jsx index 13f6103..6722729 100644 --- a/src/community/docsLessons.jsx +++ b/src/community/docsLessons.jsx @@ -8260,14 +8260,16 @@ game.placement.onCancel(() => game.ui.set('hint', '', {}));`} <>
- Игрок стоит в гараже рядом с жёлтым такси. Кликнул по - такси → весь экран плавно затемняется, в центре — снимок - сцены, под ним жёлтый прогресс-бар заполняется за 4 секунды, - крупно процент, кнопка «Пропустить» и спиннер - «Загрузка». Через 4 секунды экран исчезает — игрок уже - в городе, небо стало закатным. Это та самая «загрузка между - мирами», которую в больших играх показывают при телепорте на новый - уровень (Taxi Boss, Brookhaven, Jailbreak). + Три локации в одном проекте, между ними — красивая загрузка. + Игрок в гараже у жёлтого такси жмёт «Поехать в город» → весь + экран плавно затемняется, в центре снимок сцены, жёлтый + прогресс-бар заполняется за 4 секунды, крупно процент, + кнопка «Пропустить» и спиннер «Загрузка». Через 4 секунды + экран исчезает — игрок уже в городе с высотками и закатным небом. + В городе кнопка «Магазин» делает короткий переход внутрь + закрытого магазина (ряды стеллажей, кассы), а «Назад» возвращает на + улицу. Это та самая «загрузка между мирами» из больших игр (Taxi Boss, + Brookhaven, Jailbreak) — несколько миров без отдельных «уровней».
- На самом такси висит маленький скрипт. game.self.onClick —
- клик именно по этому объекту. Внутри — await
- game.loading.transition(...): код «замирает», пока крутится
+ Делаем кнопку и вешаем на неё переход. await
+ game.loading.transition(...) «замораживает» код, пока крутится
загрузка, и продолжается, когда она закончилась (или игрок нажал
- «Пропустить»).
+ «Пропустить»). После — телепорт и смена окружения: игрок «оказался» в
+ новом мире.
{`game.self.onClick(async () => {
+
+ {`game.gui.create('button', {
+ id: 'btn_go', x: 50, y: 92, w: 26, h: 9, anchor: 'center',
+ text: 'Поехать в город', textColor: '#3a2a00', textSize: 20, fontWeight: 800,
+ bgGradient: { stops: ['#ffd23a', '#e0a000'], angle: 90 }, borderRadius: 12,
+});
+game.gui.onClick('btn_go', async () => {
+ game.gui.remove('btn_go');
await game.loading.transition({
cover: { sceneSnapshot: true }, // снимок текущей сцены как картинка
duration: 4, // бар заполняется 4 секунды
@@ -8320,8 +8328,11 @@ game.placement.onCancel(() => game.ui.set('hint', '', {}));`}
game.scene.environment = 'sunset'; // закатное небо
});`}
transition — это «фейковый» прогресс на заданное время
- (для красивого перехода). Для реальной загрузки ресурсов есть
+ transition — «фейковый» прогресс на заданное время (для
+ красивого перехода). Точно так же сделана кнопка «Магазин»:
+ переход 1.5с → teleport внутрь закрытого
+ зала-магазина (отдельная локация со стеллажами и кассами) → кнопка
+ «Назад» возвращает в город. Для реальной загрузки ресурсов есть
show + setProgress — см. Шаг 3.
- Один проект — несколько миров (гараж, город, магазин), а
- переключение между ними прячется за красивым экраном загрузки.
- Игрок не видит «телепорт рывком» — видит плавную загрузку, как в
- больших играх. А await делает код линейным: «показать
- загрузку → дождаться → продолжить».
+ Один проект — три мира (гараж · город · интерьер магазина),
+ собранные в разных углах сцены, а переключение между ними прячется за
+ красивым экраном загрузки. Игрок не видит «телепорт рывком» — видит
+ плавную загрузку, как в больших играх. А await делает код
+ линейным: «показать загрузку → дождаться → телепортировать → сменить
+ небо». Так из одного проекта получается целая игра с локациями, без
+ отдельных уровней-файлов.
loading.transition на 1 секунду
- возвращает игрока к такси (teleport(0, 2, 0)) и ставит
- дневное небо (environment = 'day').
+ Добавь четвёртую локацию — например «парк». Поставь её в ещё
+ одном углу сцены (скажем, x = -100), сделай кнопку «В парк»
+ и переход на неё через loading.transition (свой текст и
+ duration). Не забудь кнопку «Назад», которая возвращает в
+ город. Подсказка: каждый переход = await transition →
+ teleport(...) → environment = '...'.