体験申込で

Amazonギフト

カードもらえる

体験申込・無料相談

News

お知らせ

ロブロックススタジオのスクリプトとは?初心者向け完全ガイド【Lua入門】

コラム

ロブロックススタジオでゲームを作っているとき、「敵を動かしたい」「ドアを自動で開けたい」と思ったことはありませんか?

ブロックを置くだけでは実現できないこうした動きは、スクリプトを使うことで実現できます。でも「プログラミングって難しそう…」と感じている初心者の方も多いはずです。

この記事では、スクリプトとは何かという基礎から、書き方・置き場所・コピペで動かせる実践コードまで、ステップバイステップで解説します。print関数からアニメーション・サウンド制御まで1記事で完結しているので、初めてスクリプトに触れる小学生〜中学生の方でも安心して読み進められます。

Roblox公式のCreator Hub(create.roblox.com/docs)で使われているLuau言語をベースに、信頼性の高い情報をお届けします。コードをコピーして貼り付けるだけで動作確認できるので、ぜひ一緒に試してみましょう。

スクリプトって何?ゲームを動かす仕組みを理解しよう

スクリプトとは、ゲーム内のオブジェクトに「どう動くか」を指示するプログラムです。ロブロックススタジオではLuau(ルアウ)というプログラミング言語を使います。LuauはLua 5.1をベースに、Robloxが独自に機能を追加した言語で、型システムや文字列補間など現代的な機能も備えています。

スクリプトを使うと、たとえばこんなことができるようになります。

  • ドアに近づいたら自動で開く
  • コインを取ったらスコアが増える
  • 敵が一定間隔で攻撃してくる
  • BGMや効果音をゲーム内で流す

スクリプトがなければ、ゲームは静止したオブジェクトの集まりにすぎません。スクリプトこそが、ゲームに「命」を吹き込む存在です。

スクリプトの作成場所と追加手順【ステップ別】

スクリプトを書く前に、まずどこに追加するかを理解しましょう。

ServerScriptServiceとWorkspace、どこに書く?

ロブロックスには、スクリプトを置ける場所がいくつかあります。初心者が最初に覚えるべき場所はServerScriptServiceです。

場所 用途 推奨度
ServerScriptService サーバーで動くゲームロジック全般 ★★★(推奨)
Workspace内のPart 特定のオブジェクトに直接動作をつける ★★(可)
StarterPlayerScripts プレイヤーごとのクライアント処理 ★★(用途による)
ReplicatedStorage サーバー・クライアント共有のモジュール ★(上級者向け)

管理しやすさの観点から、最初はServerScriptServiceにスクリプトをまとめるのがおすすめです。

スクリプトを追加する手順:

  1. ロブロックススタジオを開き、画面右側の「Explorer(エクスプローラー)」を表示する
  2. 「ServerScriptService」をクリックして選択する
  3. 上部メニューの「+」ボタン、またはServerScriptServiceを右クリックして「Insert Object」を選択する
  4. 「Script」を選択すると、スクリプトエディタが開く

コマンドバーで手軽に試す方法

コードを素早く試したい場合は、コマンドバー(Command Bar)が便利です。「View」メニュー→「Command Bar」で画面下部に表示できます。1行のコードをその場で実行できるため、動作の確認に役立ちます。

print("Hello from Command Bar!")

 

 

はじめてのスクリプト:print関数でHello Worldを表示

プログラミング学習の第一歩は「Hello World」の表示です。スクリプトエディタに以下のコードを入力し、「Play」ボタンを押してみましょう。

print("Hello World!")

画面下部の「Output(アウトプット)」ウィンドウに Hello World! と表示されれば成功です。たったこれだけが、あなたの最初のスクリプトです。

計算と演算子の基本(+、-、*、/)

Luauでは算数と同じ記号で計算ができます。

print(10 + 5)   -- 15 と表示
print(10 - 3)   -- 7 と表示
print(4 * 6)    -- 24 と表示
print(20 / 4)   -- 5 と表示

-- から行末はコメント(メモ)です。実行結果には影響しません。コードの意味を書き残しておくために使いましょう。

変数の使い方(localキーワード)

変数とは、数値や文字を記憶しておく「箱」のようなものです。Luauでは local キーワードを使って変数を宣言します。

local score = 0
local playerName = "Taro"

print(playerName)   -- Taro と表示
score = score + 10
print(score)        -- 10 と表示

一度作った変数には、後から別の値を代入して更新できます。スコアのカウントアップなど、ゲームロジックの基本になる部分です。

文字列と数値の結合(..演算子)

文字列と変数を組み合わせて表示するには ..(ドットドット)演算子を使います。

local playerName = "Taro"
local score = 100

print("プレイヤー名: " .. playerName)
print("スコア: " .. tostring(score))

数値を文字列に変換するにはtostring()関数が必要です。これを忘れるとエラーになるので覚えておきましょう。

アニメーションをスクリプトで制御する

スクリプトを使うと、キャラクターやオブジェクトのアニメーションをプログラムから制御できます。「ボタンを押したらキャラクターがジャンプする」といった動きも実現可能です。

AnimationControllerとAnimatorの基本

Robloxのアニメーションシステムは、以下のコンポーネントで構成されています。

  • Animation:アニメーションデータを保持するオブジェクト。アニメーションIDを指定する
  • AnimationController:キャラクター以外のモデルにアニメーションをつける際に使う
  • Animator:AnimationControllerの子として作成し、アニメーションの再生・停止を担う

Humanoid(プレイヤーキャラクター)へのアニメーション適用には、Humanoid:LoadAnimation()を使います。

スクリプトからアニメーションを再生する手順

以下は、モデルにアニメーションをスクリプトから再生する基本例です。

-- アニメーションIDを設定(Robloxアセットライブラリから取得)
local animationId = "rbxassetid://YOUR_ANIMATION_ID"

-- モデルとAnimatorを取得
local model = workspace.YourModel
local animController = model:FindFirstChildOfClass("AnimationController")
local animator = animController:FindFirstChildOfClass("Animator")

-- アニメーションをロードして再生
local animation = Instance.new("Animation")
animation.AnimationId = animationId
local animTrack = animator:LoadAnimation(animation)
animTrack:Play()

YOUR_ANIMATION_ID の部分は、Robloxのアセットライブラリや自分でアップロードしたアニメーションのIDに置き換えてください。

音楽・サウンドをスクリプトで追加する

ゲームにBGMや効果音を加えると、プレイヤーの没入感が大きく向上します。スクリプトからSoundオブジェクトを作成・操作することで、任意のタイミングでサウンドを流せます。

SoundオブジェクトとScriptの連携方法

-- Soundオブジェクトを作成してワールドに配置
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://YOUR_SOUND_ID"  -- サウンドID
sound.Volume = 0.5       -- 音量(0〜1の範囲)
sound.Looped = true      -- ループ再生するか
sound.Parent = workspace -- ゲームワールドに配置

-- 再生を開始
sound:Play()

-- 停止する場合
-- sound:Stop()

サウンドIDはRobloxのオーディオライブラリから検索できます。テスト音源には公式サンプルを使ってみてください。Looped = false にすれば、1回だけ再生して終了する効果音にも使えます。

 

 

スクリプトでよくあるエラーと対処法

スクリプトを書いていると、必ずエラーに遭遇します。でも、エラーは「どこが間違いか」を教えてくれる大切なメッセージです。エラーを怖がらず、正しく読む習慣をつけましょう。

Outputウィンドウでエラーを確認する

「View」メニュー→「Output」でOutputウィンドウを表示できます。赤字でエラーが出たら、以下の情報を確認しましょう。

  • エラーメッセージ:「attempt to index nil value」など、エラーの種類を示す
  • 行番号:何行目で問題が発生したかを示す
  • スクリプト名:どのスクリプトのエラーかを示す

赤字エラーの行番号を頼りに直接修正するのが、最も速い解決方法です。

よくある構文エラーとその修正方法

エラーの種類 原因 修正方法
attempt to concatenate a number value 数値を..で文字列結合しようとした tostring()で文字列に変換する
attempt to index nil value 存在しないオブジェクトにアクセスした オブジェクト名のスペルと配置場所を確認する
Expected 'end' to close 'if' ifforendが足りない ブロック構造を見直してendを追加する
SoundId is not a valid member プロパティ名が間違っている 大文字・小文字を含めて正確に書く

エラーが解決しない場合は、Roblox公式フォーラム(devforum.roblox.com)で同様のエラーを検索するのが効果的です。世界中の開発者が同じ問題を経験しており、解決策が投稿されていることがほとんどです。

FAQ:ロブロックススタジオ スクリプトQ&A

Q1: ロブロックススタジオのスクリプトは何語で書きますか?

LuauというLua派生の言語を使います。Lua 5.1がベースで、型システムや文字列補間などの機能が追加されています。JavaScriptやPythonよりもシンプルな構文のため、プログラミング初心者にも学びやすい言語です。

Q2: スクリプトはどこに書けばいいですか?

基本はServerScriptServiceです。WorkspaceのPartに入れる方法もありますが、管理しやすいServerScriptServiceが推奨されています。スクリプトが増えてきたらフォルダで整理すると見やすくなります。

Q3: スクリプトが動かないときはどうすれば?

OutputウィンドウのエラーメッセージとNを確認します。赤字エラーの行数を直接修正するのが最速です。「エラーがないのに動かない」場合は、Playモードで実行しているか、スクリプトが正しい場所に置かれているかを確認しましょう。

Q4: スクリプトでアニメーションを動かせますか?

はい。AnimationControllerとAnimatorオブジェクトを使い、スクリプトからLoadAnimationとPlayを呼び出します。Humanoidを持つキャラクターの場合はHumanoid:LoadAnimation()を使うと、よりシンプルに実装できます。

Q5: スクリプトを無料で学べるサイトはありますか?

Roblox公式のCreator Hub(create.roblox.com/docs)に無料チュートリアルが豊富にあります。日本語対応は限定的ですが、コード例を見るだけでも大きな参考になります。

まとめ:次のステップへ

この記事では、ロブロックススタジオのスクリプト(Luau)について以下を解説しました。

重要なポイント:

  • スクリプトとはゲームに動きをつけるプログラム。ロブロックスではLuau言語を使う
  • 書く場所はServerScriptServiceが基本。管理しやすく初心者に最適
  • print関数・変数・文字列結合など、基礎構文はシンプルで覚えやすい
  • アニメーションやサウンドもスクリプトから制御できる
  • エラーはOutputウィンドウで確認し、行番号を頼りに修正する

スクリプトを覚えると、ブロックを置くだけでは作れなかった「動くゲーム」が作れるようになります。最初はコードをコピーして動かすところから始め、少しずつ改造しながら自分のものにしていきましょう。

TETRA UPのRobloxコースでは、スクリプトの基礎からオリジナルゲーム制作まで、プロのインストラクターが丁寧にサポートします。まずは無料体験で、スクリプトを使ったゲーム制作の楽しさを実感してみませんか?

あわせて読みたい

コラム