「ただキューブを動かしたかっただけなのに、結局200行のゲームを書いてしまった」 — Roblox Studio を開いたすべてのユーザー
そもそも、なぜLuaがRobloxに必要なのでしょうか?
さて、詳しく見ていきましょう。あなたはおそらく、何百万人もの人が他のプレイヤーが作ったゲームをプレイするプラットフォーム、Robloxについて聞いたことがあるでしょう。そして、この魔法の背後にいるのは Luau —これは、Robloxに合わせて調整されたLuaのフォークです。高速、シンプル、タイプ付き(まあ、ほぼ)。
すでにJS、Python、またはその他の言語でコーディングしている場合、Luaは疑わしいほどシンプルに思えるでしょう。ブロックには {} がなく、行の終わりには ; がありません。local、function、endだけで、さあ始めましょう。
事実: Lua の配列は 0 ではなく 1 から始まります。はい、私たちもショックです。ありがとうを言わないでください。
ステップ0:Roblox Studioを開く
Roblox Studioをダウンロードする
新しいプロジェクトを作成 → 選択 Baseplate (床のある空っぽの世界)
3Dシーンが表示されます。左側には Explorer (オブジェクトツリー)、右側に Properties
以上。あなたはゲーム開発者です。LinkedInを更新できます。
ステップ1:オブジェクトをステージに投げる
上部のメニューをクリックします Part → 灰色のレンガがステージに現れます。これが私たちの実験対象です。
順番に名前を変更します。
B Explorer
Partを見つけます右クリック→ Rename →
MovingBlockを書きます
色を変更することができます Properties → BrickColor. 純粋に雰囲気のため。
ステップ2:最初のスクリプト — オブジェクトを移動する
ここからが面白いところです。エクスプローラーでMovingBlock を右クリックします → Insert Object → Script.
コードエディターが開きます。デフォルトの print("Hello world!") を削除して、次のように記述します。
local block = script.Parent -- это наш MovingBlocklocal startPos = block.Position -- запоминаем стартовую позицию
while true do
for i = 0, 10, 0.1 do
block.Position = startPos + Vector3.new(math.sin(i) * 5, 0, 0)
task.wait(0.03)
endendここで起こっていること:
script.Parentは、スクリプト(当社のブロック)が内部にあるオブジェクトですVector3.new(x, y, z)— 3D空間の座標math.sin(i) * 5— ブロックは 5 ユニットの振幅で正弦波に沿って前後に揺れますtask.wait(0.03)— フレーム間のポーズ(≈30 FPSの動き)
クリック Play (上の緑のボタン)そして…キューブが動き出しました!振り子のように前後に動きます。美しい。
おめでとうございます。あなたは最初のゲームスクリプトを書きました。 これは、「ゲームを作りたい」と考えている人々の90%以上がすでに行っていることです。
ステップ3:プレイヤーに反応する - 「私のキューブに触らないで!」
今度は、プレイヤーがブロックに触れたときにブロックが反応するようにします。スクリプトの内容を以下に置き換えます。
local block = script.Parent
local startPos = block.Position
local isRunning = false
-- Функция: блок убегает вверх при касанииlocal function onTouch(otherPart)
-- Проверяем, что нас коснулся именно игрок (у него есть Humanoid)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and not isRunning then
isRunning = true
-- Блок подпрыгивает
for i = 0, 3, 0.1 do
block.Position = startPos + Vector3.new(0, math.sin(i) * 8, 0)
task.wait(0.02)
end
-- Возвращается на место
block.Position = startPos
-- Кулдаун 1 секунда
task.wait(1)
isRunning = false
endend
-- Подписываемся на событие касания
block.Touched:Connect(onTouch)分析:
Touched— オブジェクトと物理的に接触したときにトリガーされるイベント:Connect(функция)— イベントのサブスクリプション(こんにちは、オブザーバーパターン!)FindFirstChild("Humanoid")— 当たったのは偶然のレンガではなく、プレイヤーであることを確認しますisRunning— デバウンスフラグ。アニメーションが連続して100回起動しないようにするためのものです。
クリック Play、キャラクターのブロックに近づいて、それをタッチするとジャンプします。まるでキュウリに驚いた猫のように。

ステップ4:コンボ—動き+反応
そして、最終ボスです。ブロックを作成します。このブロックは自ら動き、プレイヤーに反応します。色が変わり、膨らみます。
local block = script.Parent
local startPos = block.Position
local originalColor = block.BrickColor
local isReacting = false
-- Движение блока (в отдельном потоке)task.spawn(function()
while true do
for i = 0, 10, 0.1 do
if not isReacting then
block.Position = startPos + Vector3.new(
math.sin(i) * 5, 0, math.cos(i) * 5
)
end
task.wait(0.03)
end
endend)
-- Реакция на касание
block.Touched:Connect(function(otherPart)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and not isReacting then
isReacting = true
-- Меняем цвет на случайный
block.BrickColor = BrickColor.Random()
block.Size = block.Size + Vector3.new(1, 1, 1)
task.wait(0.5)
-- Возвращаем как было
block.BrickColor = originalColor
block.Size = block.Size - Vector3.new(1, 1, 1)
task.wait(0.5)
isReacting = false
endend)
print("🎮 Script is running! Try touching the block.")新着情報:
task.spawn()— 非同期で関数を起動します(Lua のみで goroutine として)ブロックは円を描くように動きます。X軸に沿って
sin、Z軸に沿ってcos— 円形の軌道ブロックに触れると、ブロックの色がランダムに変わり、「膨らみ」ます
print()はメッセージを表示します Output ( StudioのView → Output )
これで、円を描くように飛び回り、タッチすると色が点滅してプレイヤーをトリするブロックができました。これは、基本的に「キューブをキャッチ」というミニゲームです。
クイックチートシート
コンセプト | 例 |
|---|---|
変数 |
|
機能 |
|
条件 |
|
サイクル |
|
テーブル(配列) |
|
表(オブジェクト) |
|
イベント |
|
待機 |
|
非同期 |
|
次に何を学びますか?
あなたは最初のスクリプトを書きました。しかし、これはほんのはじまりです。
RemoteEvents — クライアントとサーバー間の通信(はい、Roblox にはクライアントサーバーアーキテクチャがあります!)
DataStoreService — プレイヤーの進捗状況を保存
TweenService — 手動サイクルなしのスムーズなアニメーション
UI — ScreenGui を使用したインターフェース
モジュール -
ModuleScript純粋なアーキテクチャ用
📱 プログラミングスキルをレベルアップしたいですか?
このテーマに興味を持たれ、読むだけでなく、 実際にコーディングする — アプリを試してみよう コディックこれは、プログラミングを実践を通じて学ぶためのプラットフォームです。短いレッスン、アプリ内で直接確認できるタスク、そしてわかりやすい説明が特徴です。地下鉄で、列に並んでいる間、または就寝前に、基本を磨いたり、新しい言語を習得したりするのに最適です。
そして、私たちの テレグラムチャンネル — 開発者向けのプログラミングに関する投稿、タスク分析、チートシート、ミームが定期的に公開されています。コンピューターの前に座る時間がないときでも、素材を繰り返して自分自身を調整しておくのに最適な方法です。
ゲームデブで幸運を祈ります! そして、すべてのAAAゲームは、誰かがスクリプトで蹴ったキューブから始まったことを忘れないでください。 🎮
