diff --git a/src/community/KubikonDocs.jsx b/src/community/KubikonDocs.jsx index 5fe7f51..ceb85c8 100644 --- a/src/community/KubikonDocs.jsx +++ b/src/community/KubikonDocs.jsx @@ -224,12 +224,21 @@ const GamesGrid = ({ onOpenLesson }) => ( Если урока ещё нет — иконка-плейсхолдер. */}
+ Простой туториал-уровень: ровный газон и три цели — + красный куб, синяя сфера и золотой сундук. + Над целью парит светящаяся стрелка-указатель «иди сюда», + а к ней по земле бежит дорожка из шевронов — точь-в-точь как + маркеры заданий в Roblox. Дошёл до цели — стрелка сама + перепрыгивает на следующую и меняет цвет. +
+ + guide (красная), quest (жёлтая),
+ gift (радужная); red-cube (куб), blue-sphere (сфера),
+ gold-chest (куб). Имя — это как раз то, по чему
+ скрипт найдёт объект.
+
+ Стрелку создаёт одна команда. Важно: ищем цель не сразу,
+ а через game.after — на старте объекты сцены ещё
+ могут быть не готовы.
+
{`// === ТУТОРИАЛ — СОБЕРИ МОНЕТКИ — главный скрипт ===
+
+const targets = ['red-cube', 'blue-sphere', 'gold-chest'];
+const presets = ['guide', 'quest', 'gift']; // цвета стрелки по очереди
+let step = 0;
+let arrow = null;
+
+game.ui.set('hint', 'Иди за стрелкой к цели!', { x: 50, y: 6, anchor: 'top' });
+
+// Через 0.4 сек — создаём стрелку от игрока к первой цели.
+game.after(0.4, () => {
+ const first = game.scene.findOne(targets[0]);
+ arrow = game.fx.pointer({ from: 'player', to: first, preset: 'guide' });
+});`}
+
+ game.fx.pointer({ from, to, preset }) —
+ from: 'player' значит «от игрока»,
+ to — объект-цель (нашли через
+ findOne), preset — стиль.
+
+ На каждую цель вешаем onTouch: дошёл — берём
+ следующую и перенацеливаем ту же стрелку через
+ setTarget, а стиль меняем через
+ update.
+
{`for (let i = 0; i < targets.length; i++) {
+ const obj = game.scene.findOne(targets[i]);
+ if (!obj) continue;
+ obj.onTouch(() => {
+ if (i !== step) return; // только текущая по порядку цель
+ step++;
+ if (step >= targets.length) {
+ if (arrow) arrow.remove(); // все цели собраны — убираем стрелку
+ game.ui.set('hint', 'Молодец! Все цели собраны!', { x: 50, y: 6, anchor: 'top' });
+ return;
+ }
+ const next = game.scene.findOne(targets[step]);
+ arrow.setTarget(next); // стрелка теперь ведёт к следующей
+ arrow.update({ preset: presets[step] }); // и меняет цвет
+ });
+}`}
+
+ game.fx.pointer с
+ texture: 'lightning', color: '#22ff66'
+ и curved: true — получится изогнутая зелёная
+ молниевая стрелка.
+