diff --git a/src/community/docsGames.js b/src/community/docsGames.js index 1f69526..06d58db 100644 --- a/src/community/docsGames.js +++ b/src/community/docsGames.js @@ -353,4 +353,9 @@ export const GAMES = [ desc: 'Полноценные машины: подходишь, держишь F — садишься за руль, WASD рулят, камера следует за авто, спидометр снизу. E — выйти. Готовые 3D-модели машин.', mechanics: ['game.scene.spawn(\'vehicle:car\')', 'аркадная физика (газ/руль/тормоз)', 'hold-F вход / E выход', 'камера за машиной (V меняет)', 'HUD водителя (спидометр+передача)', 'onVehicleEnter/onVehicleExit'], previewShot: 'guide-taxisim-scene.png', openProjectId: 2436, ready: true }, + { id: 'guide-skybox', num: 62, group: 'g5', stars: 2, icon: 'cloud', + title: 'Небесная демка — кастомное небо', + desc: 'Одной строкой меняешь небо: голубой день, закат, звёздная ночь, космос. Облака, туман, далёкие горы и плавные переходы между пресетами.', + mechanics: ['game.scene.setSkybox({ preset })', 'game.scene.setClouds / setFog', 'skybox.fadeTo(opts, сек) — плавный переход', '6 пресетов: день/lowpoly/закат/ночь/космос', 'небо = единый источник света сцены', 'облака-дрейф + дымка горизонта'], + previewShot: 'guide-skybox-scene.png', openProjectId: 2541, ready: true }, ]; diff --git a/src/community/docsIcons.jsx b/src/community/docsIcons.jsx index d32a1b9..5de69c8 100644 --- a/src/community/docsIcons.jsx +++ b/src/community/docsIcons.jsx @@ -319,6 +319,11 @@ const ICONS = { ), + cloud: () => ( + <> + + + ), car: () => ( <> diff --git a/src/community/docsLessons.jsx b/src/community/docsLessons.jsx index 2001a36..8562c3b 100644 --- a/src/community/docsLessons.jsx +++ b/src/community/docsLessons.jsx @@ -8596,6 +8596,101 @@ game.onVehicleExit((vehicleRef) => { ), }, + 'guide-skybox': { + body: ( + <> +

Что получится

+

+ Красивое небо в одну строку. Вместо плоского цветного фона — + градиентный купол с солнцем, плывущими облаками, дымкой у горизонта + и далёкими горами (low-poly стиль, как в топовых Roblox-играх). Небо + меняется кнопками: день, закат, звёздная ночь, + космос — с плавным переходом за пару секунд. И главное: небо — + это единый источник света: меняешь пресет → вместе с небом + меняется и освещение всей сцены (на закате теплеет, ночью темнеет). +

+ + + +

Чему научишься

+
    +
  • game.scene.setSkybox({'{'} preset {'}'}) — поставить готовое небо + одной строкой (6 пресетов);
  • +
  • game.scene.setClouds(...) — облака: плотность, скорость дрейфа, цвет;
  • +
  • game.scene.setFog(...) — атмосферный туман: дальние объекты выцветают в небо;
  • +
  • game.scene.skybox.fadeTo(opts, сек) — плавный переход между небесами;
  • +
  • game.scene.skybox.setSunDirection(...) — двигать солнце (анимация дуги).
  • +
+ +

Шаг 1. Поставить небо

+

+ Самое простое — выбрать пресет. Доступны: + clear-summer-day, lowpoly-roblox, + cloudy, sunset, starry-night, + space. +

+ + {`// Голубое low-poly небо с облаками, дымкой и горами (как на скрине): +game.scene.setSkybox({ preset: 'lowpoly-roblox' }); +game.scene.setClouds({ enabled: true, cover: 0.45, speed: 0.014 }); +game.scene.setFog({ color: '#e2eef7', density: 0.005 });`} + + Небо само выставляет освещение сцены под выбранный пресет — отдельно + свет настраивать не нужно. Купол бесконечно далёкий, поэтому ходить + «до края неба» нельзя — оно всегда вокруг игрока. + + +

Шаг 2. Плавная смена неба (день → закат → ночь)

+

+ skybox.fadeTo переводит небо к новому пресету за указанное + число секунд — цвета купола, солнце, облака, туман и свет сцены + меняются плавно. Удобно вешать на кнопки или события. +

+ + {`game.gui.onClick('btn-sunset', () => game.scene.skybox.fadeTo({ preset: 'sunset' }, 2)); +game.gui.onClick('btn-night', () => game.scene.skybox.fadeTo({ preset: 'starry-night' }, 2)); +game.gui.onClick('btn-space', () => game.scene.skybox.fadeTo({ preset: 'space' }, 2));`} + + + + + +

Шаг 3. Своё небо (gradient)

+

+ Можно не брать пресет, а задать цвета купола вручную — верх, низ, + горизонт и солнце. +

+ + {`game.scene.setSkybox({ + mode: 'gradient', + topColor: '#3d7fe0', // зенит + bottomColor: '#dcebf7', // у земли + horizonColor: '#bcd9f2', // линия горизонта + sunDirection: { x: 0.3, y: 0.85, z: 0.4 }, + sunColor: '#fff6d8', + sunSize: 0.035, +});`} + +

Почему это важно

+

+ Небо — половина визуального впечатления от мира. С плоским фоном все + игры выглядят одинаково и дёшево; с кастомным небом — атмосферно и + «дорого». А связка неба с освещением даёт бесплатный приём: смена + времени суток одной строкой мгновенно меняет настроение всей сцены. +

+ + + Сделай день/ночь цикл: по таймеру каждые 10 секунд переключай + fadeTo между 'clear-summer-day' и + 'starry-night'. Добавь облака погуще на день и убери на ночь. + + + ), + }, + }; /** Есть ли готовый текст урока для игры с таким id. */