こんにちは、「ぷろぐらの森」です🌲
この記事を読むと、Roblox StudioでLuauスクリプトを書いて、ゲームに動きをつけることができるようになります!
「プログラミングって難しそう…」と思っているあなたでも大丈夫。
ゲームのキャラクターに動いてもらうコードを、コピペしながら一緒に書いていきましょう!
この記事でわかること
- Robloxのスクリプトで使う言語「Luau」とは
- 変数の作り方と使い方
- if文(条件分岐)でゲームオーバーを作る方法
- 関数でコードをまとめる方法
- Roblox Studioへの組み込み手順
RobloxのスクリプトはLuauで書く
Roblox Studioでゲームに動きをつけるには、Luau(ルアウ)というプログラミング言語を使います。
LuauはもともとLua(ルア)という言語をRoblox向けにアップグレードしたもの。シンプルな書き方なので、プログラミングが初めてでも読みやすいのが特徴です。
LuauはLuaに型安全の仕組みを加えた言語です。
プロの現場ではTypeScriptのような型宣言もでき、
大規模なゲーム開発でも使いやすくなっています。
初心者のうちは型を意識しなくてOKですが、スクリプトが大きくなったときに「型」の知識がかなり役立ちますよ!
① 変数:データを入れる「箱」
変数は、数値や文字を保存しておく「箱」です。ゲームのHPや名前など、あとで使いたい情報を入れておけます。
local hp = 100 -- キャラクターのHP
local playerName = "カラさん" -- プレイヤーの名前
local isAlive = true -- 生きているか(true / false)
書き方のルール
| キーワード | 意味 |
|---|---|
local | この変数はここだけで使う(基本的に必ず書く) |
= | 右の値を左の箱に入れる |
-- | コメント(メモ書き)。プログラムには影響しない |
データの種類3つ
local score = 0 -- 数値(整数・小数どちらもOK)
local message = "スタート!" -- 文字列("" で囲む)
local isGameOver = false -- 真偽値(true か false の2択)
試してみよう!
このコードをそのままコピーして、
Roblox Studioのエクスプローラー ➡ StarterPlayer ➡ StarterCharacterScriptsに「LocalScript」を作成して
貼り付けてみてください。
エラーが出なければ成功です!
② if文:条件によって処理を分ける
if文は「もし〇〇なら△△する」という処理です。ゲームの「HPが0ならゲームオーバー」を作るときに使います。
local hp = 0
if hp <= 0 then
print("ゲームオーバー!")
else
print("まだ戦える!")
end
print() はRoblox Studioの「Output」パネルに文字を表示する命令です。動作確認のときにとても便利。
実際のゲームコードで見てみよう
HPが0以下になったら自動でゲームオーバーを検知するスクリプトです。
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- HPが変わるたびに自動で呼び出される
humanoid.HealthChanged:Connect(function(health)
if health <= 0 then
print(player.Name .. " がやられた!")
end
end)
HealthChanged:Connect() はRobloxのイベント機能です。
サーバーサイドのプログラムで言えば「イベントリスナー」と同じ仕組み。HPが変わった瞬間に自動で関数を呼び出してくれます。
JavaScriptの addEventListener を知っている人なら、まったく同じ概念ですよ!
③ 関数:処理をひとまとめにする
同じ処理を何度も書くのは大変です。関数を使うと、よく使う処理に名前をつけてまとめることができます。
-- ダメージを与える関数
local function takeDamage(humanoid, amount)
humanoid.Health = humanoid.Health - amount
print(amount .. "ダメージ!")
end
-- 使い方(30ダメージを与える)
-- takeDamage(humanoid, 30)
function 名前(引数) ... end が基本の形です。
変数・if文・関数を組み合わせた完成コード
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- ダメージを与える関数
local function takeDamage(amount)
humanoid.Health = humanoid.Health - amount
print(amount .. "のダメージ! 残りHP: " .. math.floor(humanoid.Health))
end
-- HPを回復する関数
local function heal(amount)
humanoid.Health = math.min(humanoid.Health + amount, humanoid.MaxHealth)
print(amount .. "回復! 残りHP: " .. math.floor(humanoid.Health))
end
-- HPが変わったらゲームオーバー判定
humanoid.HealthChanged:Connect(function(health)
if health <= 0 then
print("ゲームオーバー!")
end
end)
-- テスト実行
takeDamage(30)
heal(10)
Outputパネルに「30のダメージ!」「10回復!」と表示されれば成功です。
④ Roblox Studioへの組み込み手順
- Roblox Studioを開き、任意のワールドを作成
- 左側の「Explorer」パネルで
StarterPlayer➡ StarterCharacterScriptsの十字マークをクリック - 「LocalScript」を選択
- 開いたコードエディタに上の完成コードを貼り付ける
- 左上の「▶ (Play)」ボタンでテストプレイ開始
- 下部の「出力」パネルに
print()の結果が表示されるのを確認
まとめ
| 概念 | 書き方の例 | 使いどき |
|---|---|---|
| 変数 | local hp = 100 | データを保存するとき |
| if文 | if hp <= 0 then ... end | 条件で処理を分けるとき |
| 関数 | local function heal(n) ... end | 同じ処理をまとめるとき |
この3つを組み合わせるだけで、ゲームの基本的な動きはほぼ作れます。
まずはコードをコピーして動かしてみることが一番の近道です!
次のステップとして、今回覚えた変数・if文・関数を使って、Robloxでジャンプ島(オブビー)を実際に作る方法を解説します。ぜひそちらも読んでみてください。
Luauにはサーバー側(ServerScript)とクライアント側(LocalScript)の2種類があります。
今回のコードはLocalScriptで動かすことを想定していますが、本格的なゲーム開発では「どちらで書くか」が非常に重要です。
チート対策や課金処理はサーバー側、キャラクター操作の演出はクライアント側、と使い分けるのが鉄則。
これはRoblox特有ではなく、あらゆるオンラインゲーム開発の基本原則でもあります。
参考リンク
・Roblox 公式ドキュメント(Luauスクリプト)
・エンジニア解説!Robloxゲーム開発入門〜RobloxStudioとは〜


コメント