diff --git a/src/community/docsGames.js b/src/community/docsGames.js index b7a30fd..59fb4ac 100644 --- a/src/community/docsGames.js +++ b/src/community/docsGames.js @@ -363,4 +363,9 @@ export const GAMES = [ desc: 'Таблица лидеров справа-сверху (монеты/время/уровень) + всплывающие достижения с редкостью и звуком. Прогресс сохраняется в БД между сессиями.', mechanics: ['game.leaderstats.define / me.add', 'HUD-таблица топ-10 (сортировка по primary)', 'game.achievements.define / unlock', 'bindToStat — авто-награда по статy', 'toast 4 редкости + очередь', 'кубок → страница достижений', 'сохранение в БД (savegame)'], previewShot: 'guide-leaderstats-scene.png', openProjectId: 2616, ready: true }, + { id: 'guide-floaters', num: 64, group: 'g5', stars: 2, icon: 'sparkles', + title: 'Тренировочный полигон — цифры урона', + desc: 'Всплывающие цифры урона над целью (как в Roblox-RPG): красный урон, жёлтый крит с pop-эффектом, зелёный хил, синяя мана, серый «Промах», стек «×N» и комикс-стиль BAM!/KAPOW!.', + mechanics: ['game.fx.damageFloater(pos, value, opts)', 'isCrit / isHeal / isMana / isMiss — цвет', 'подъём + плавное затухание + покачивание', 'crit — pop-эффект (scale 1→1.3→1)', 'stackKey — стек одинаковых в «×N»', 'comicStyle — BAM!/KAPOW! на звезде', 'object pool 30 планов (без лагов)'], + previewShot: 'guide-floaters-scene.png', openProjectId: 2676, ready: true }, ]; diff --git a/src/community/docsLessons.jsx b/src/community/docsLessons.jsx index 8a18641..c3281fe 100644 --- a/src/community/docsLessons.jsx +++ b/src/community/docsLessons.jsx @@ -8782,6 +8782,78 @@ game.achievements.unlock('first_coin');`} ), }, + 'guide-floaters': { + body: ( + <> +
+ Тренировочный полигон с манекенами. При ударе над целью + всплывает цифра урона — как в Roblox-RPG (Pet Sim, Anime + Adventures): красный обычный урон, жёлтый КРИТ с подскоком, + зелёный хил, синяя мана, серый «Промах». Одинаковые удары + собираются в стек «×N», а в комикс-режиме вместо цифр — BAM! и KAPOW!. +
+ +Одна строка рисует всплывающую цифру в нужной точке мира:
+{`game.fx.damageFloater(position, value, opts)`}
+ {'{x,y,z}'}, ссылка на объект или 'player';{`game.fx.damageFloater(pos, 25); // красный — обычный урон
+game.fx.damageFloater(pos, 80, { isCrit: true }); // жёлтый, больше + подскок
+game.fx.damageFloater(pos, 30, { isHeal: true }); // зелёный — лечение (+30)
+game.fx.damageFloater(pos, 50, { isMana: true }); // синий — мана
+game.fx.damageFloater(pos, 'Промах', { isMiss: true }); // серый текст`}
+
+
+ При AOE по одной цели десятки цифр сливаются в кашу. Передай
+ общий stackKey — и удары соберутся в один floater «×N».
+
{`for (let i = 0; i < 10; i++) {
+ game.fx.damageFloater(enemy.position, 25, { stackKey: 'aoe_' + enemy.id });
+}
+// → один floater «-25 ×10» вместо десяти отдельных`}
+
+
+ Для казуальных игр — comicStyle: true: вместо чисел
+ рисуется «BAM!» (урон >50), «KAPOW!» (>100), «POW!» (крит) на
+ жёлтой звезде-вспышке.
+
{`game.fx.damageFloater(pos, 120, { comicStyle: true }); // KAPOW!`}
+
+ + Без всплывающих цифр любой удар ощущается «впустую». Это базовый + боевой фидбек: игрок видит, сколько нанёс, был ли крит, попал ли + вообще. Сочетается с боевыми механиками и способностями. +
+ +damageFloater(pos, 15, {'{'} color:
+ '#ff7a2a' {'}'}) каждые 0.5 сек 3 раза подряд — эффект
+ горения (-15… -15… -15).
+