【コピペok】Roblox-Luau入門|変数・if文・関数をゲームで覚えよう!

こんにちは、「ぷろぐらの森」です🌲

この記事を読むと、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への組み込み手順

  1. Roblox Studioを開き、任意のワールドを作成
  2. 左側の「Explorer」パネルで StarterPlayer ➡ StarterCharacterScriptsの十字マークをクリック
  3. LocalScript」を選択
  4. 開いたコードエディタに上の完成コードを貼り付ける
  5. 左上の「▶ (Play)」ボタンでテストプレイ開始
  6. 下部の「出力」パネルに 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とは〜

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

神奈川県出身
どこにでもいる現役ゲーム会社サーバーエンジニア。大学ではひたすらゲーム!ゲーム!という人生を送ってました。

このブログは「ゲームを作ってみたい!」「プログラミングに関する知識をつけたい!」そんな皆さんの少しでもお役になれば嬉しいなと思い開設しました。

趣味
YouTube鑑賞、ストリートな格闘ゲーム、キャンプ

最近の出来事
・痔主になってしまいました....
・Google Cloud Professional Cloud Architect取得しました。

コメント

コメントする

目次