docs(studio): вики задача 40 — карточка #64 + статья «Тренировочный полигон (цифры урона)»
Карточка g5 #64 guide-floaters (openProjectId 2676) + статья: game.fx. damageFloater, типы (damage/crit/heal/mana/miss), стек stackKey, comicStyle, object pool. 2 скрина (scene/play) в public/wiki. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
458b6c3b59
commit
c93070170b
@ -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 },
|
||||
];
|
||||
|
||||
@ -8782,6 +8782,78 @@ game.achievements.unlock('first_coin');`}</Code>
|
||||
),
|
||||
},
|
||||
|
||||
'guide-floaters': {
|
||||
body: (
|
||||
<>
|
||||
<h3 className="lessonH">Что получится</h3>
|
||||
<p>
|
||||
Тренировочный полигон с манекенами. При ударе над целью
|
||||
<b> всплывает цифра урона</b> — как в Roblox-RPG (Pet Sim, Anime
|
||||
Adventures): красный обычный урон, жёлтый КРИТ с подскоком,
|
||||
зелёный хил, синяя мана, серый «Промах». Одинаковые удары
|
||||
собираются в стек «×N», а в комикс-режиме вместо цифр — BAM! и KAPOW!.
|
||||
</p>
|
||||
|
||||
<Shot src="guide-floaters-play.png" wide
|
||||
caption="Над манекеном всплывают цифры: красный урон, синяя мана «-50», стек «-25 ×10». Цифры поднимаются и плавно гаснут." />
|
||||
|
||||
<h3 className="lessonH">Главный метод</h3>
|
||||
<p>Одна строка рисует всплывающую цифру в нужной точке мира:</p>
|
||||
<Code>{`game.fx.damageFloater(position, value, opts)`}</Code>
|
||||
<ul>
|
||||
<li><b>position</b> — точка <code>{'{x,y,z}'}</code>, ссылка на объект или <code>'player'</code>;</li>
|
||||
<li><b>value</b> — число (урон) или строка («Промах», «BLOCKED»);</li>
|
||||
<li><b>opts</b> — стиль: цвет и тип эффекта.</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="lessonH">Типы (цвета)</h3>
|
||||
<ScriptKind kind="global" />
|
||||
<Code>{`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 }); // серый текст`}</Code>
|
||||
|
||||
<h3 className="lessonH">Стек одинаковых ударов</h3>
|
||||
<p>
|
||||
При AOE по одной цели десятки цифр сливаются в кашу. Передай
|
||||
общий <code>stackKey</code> — и удары соберутся в один floater «×N».
|
||||
</p>
|
||||
<Code>{`for (let i = 0; i < 10; i++) {
|
||||
game.fx.damageFloater(enemy.position, 25, { stackKey: 'aoe_' + enemy.id });
|
||||
}
|
||||
// → один floater «-25 ×10» вместо десяти отдельных`}</Code>
|
||||
|
||||
<h3 className="lessonH">Комикс-стиль</h3>
|
||||
<p>
|
||||
Для казуальных игр — <code>comicStyle: true</code>: вместо чисел
|
||||
рисуется «BAM!» (урон >50), «KAPOW!» (>100), «POW!» (крит) на
|
||||
жёлтой звезде-вспышке.
|
||||
</p>
|
||||
<Code>{`game.fx.damageFloater(pos, 120, { comicStyle: true }); // KAPOW!`}</Code>
|
||||
|
||||
<Note>
|
||||
Под капотом — пул из 30 переиспользуемых билборд-планов
|
||||
(object pool), поэтому даже при спаме десятков цифр FPS не
|
||||
проседает. Цифры всегда поверх геометрии и повёрнуты к камере.
|
||||
</Note>
|
||||
|
||||
<h3 className="lessonH">Почему это важно</h3>
|
||||
<p>
|
||||
Без всплывающих цифр любой удар ощущается «впустую». Это базовый
|
||||
боевой фидбек: игрок видит, сколько нанёс, был ли крит, попал ли
|
||||
вообще. Сочетается с боевыми механиками и способностями.
|
||||
</p>
|
||||
|
||||
<Try>
|
||||
Сделай «огненный» урон: <code>damageFloater(pos, 15, {'{'} color:
|
||||
'#ff7a2a' {'}'})</code> каждые 0.5 сек 3 раза подряд — эффект
|
||||
горения (-15… -15… -15).
|
||||
</Try>
|
||||
</>
|
||||
),
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
/** Есть ли готовый текст урока для игры с таким id. */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user