feat: 50 игр на Lua + импорт Roblox для всех + поддержка Lua в плеере #39
@ -3053,7 +3053,7 @@ game.self.onTouch(() => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 2. Главный скрипт</h3>
|
<h3 className="lessonH">Шаг 2. Главный скрипт</h3>
|
||||||
<ScriptKind kind="global" />
|
<ScriptKind kind="global" />
|
||||||
<Code>{`// === ИГРА «ЗОНА ОПАСНОСТИ» — главный скрипт ===
|
<CodeBoth game="danger-zone" script="g22_main">{`// === ИГРА «ЗОНА ОПАСНОСТИ» — главный скрипт ===
|
||||||
|
|
||||||
let inZone = false; // игрок сейчас в красной зоне?
|
let inZone = false; // игрок сейчас в красной зоне?
|
||||||
let won = false;
|
let won = false;
|
||||||
@ -3084,7 +3084,7 @@ game.onMessage('win', () => {
|
|||||||
const p = game.player.position;
|
const p = game.player.position;
|
||||||
game.scene.spawnParticles('confetti',
|
game.scene.spawnParticles('confetti',
|
||||||
{ x: p.x, y: p.y + 3, z: p.z }, { duration: 3, count: 3 });
|
{ x: p.x, y: p.y + 3, z: p.z }, { duration: 3, count: 3 });
|
||||||
});`}</Code>
|
});`}</CodeBoth>
|
||||||
<p>Разберём:</p>
|
<p>Разберём:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><code>inZone</code> — флажок «игрок внутри красной
|
<li><code>inZone</code> — флажок «игрок внутри красной
|
||||||
@ -3105,7 +3105,7 @@ game.onMessage('win', () => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 3. Скрипт зоны опасности</h3>
|
<h3 className="lessonH">Шаг 3. Скрипт зоны опасности</h3>
|
||||||
<ScriptKind kind="object" on="красную зону" />
|
<ScriptKind kind="object" on="красную зону" />
|
||||||
<Code>{`// === Скрипт зоны опасности ===
|
<CodeBoth game="danger-zone" script="g22_zone">{`// === Скрипт зоны опасности ===
|
||||||
// onTouch — игрок вошёл, onUntouch — вышел.
|
// onTouch — игрок вошёл, onUntouch — вышел.
|
||||||
|
|
||||||
game.self.onTouch(() => {
|
game.self.onTouch(() => {
|
||||||
@ -3113,7 +3113,7 @@ game.self.onTouch(() => {
|
|||||||
});
|
});
|
||||||
game.self.onUntouch(() => {
|
game.self.onUntouch(() => {
|
||||||
game.broadcast('zone-leave');
|
game.broadcast('zone-leave');
|
||||||
});`}</Code>
|
});`}</CodeBoth>
|
||||||
<p>
|
<p>
|
||||||
Здесь важна <b>пара событий</b>: <code>onTouch</code>
|
Здесь важна <b>пара событий</b>: <code>onTouch</code>
|
||||||
срабатывает, когда игрок входит в зону, а
|
срабатывает, когда игрок входит в зону, а
|
||||||
@ -3123,13 +3123,13 @@ game.self.onUntouch(() => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 4. Скрипт аптечки</h3>
|
<h3 className="lessonH">Шаг 4. Скрипт аптечки</h3>
|
||||||
<ScriptKind kind="object" on="зелёную аптечку" />
|
<ScriptKind kind="object" on="зелёную аптечку" />
|
||||||
<Code>{`// === Скрипт аптечки ===
|
<CodeBoth game="danger-zone" script="g22_heal">{`// === Скрипт аптечки ===
|
||||||
game.self.onTouch(() => {
|
game.self.onTouch(() => {
|
||||||
game.player.heal(60);
|
game.player.heal(60);
|
||||||
game.ui.showText('+60 HP', 1.5);
|
game.ui.showText('+60 HP', 1.5);
|
||||||
game.sound.play('pickup');
|
game.sound.play('pickup');
|
||||||
game.self.delete();
|
game.self.delete();
|
||||||
});`}</Code>
|
});`}</CodeBoth>
|
||||||
<p>
|
<p>
|
||||||
<code>game.player.heal(60)</code> — добавляет игроку
|
<code>game.player.heal(60)</code> — добавляет игроку
|
||||||
60 единиц здоровья. Аптечку взяли один раз —
|
60 единиц здоровья. Аптечку взяли один раз —
|
||||||
@ -3138,10 +3138,10 @@ game.self.onTouch(() => {
|
|||||||
|
|
||||||
<h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3>
|
<h3 className="lessonH">Шаг 5. Скрипт финиша и проверка</h3>
|
||||||
<ScriptKind kind="object" on="зелёный финиш" />
|
<ScriptKind kind="object" on="зелёный финиш" />
|
||||||
<Code>{`// === Скрипт финиша ===
|
<CodeBoth game="danger-zone" script="g22_finish">{`// === Скрипт финиша ===
|
||||||
game.self.onTouch(() => {
|
game.self.onTouch(() => {
|
||||||
game.broadcast('win');
|
game.broadcast('win');
|
||||||
});`}</Code>
|
});`}</CodeBoth>
|
||||||
<ul>
|
<ul>
|
||||||
<li>подбери зелёную аптечку — +60 HP;</li>
|
<li>подбери зелёную аптечку — +60 HP;</li>
|
||||||
<li>в красной зоне здоровье тает каждые 0.6 секунды;</li>
|
<li>в красной зоне здоровье тает каждые 0.6 секунды;</li>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user