【説明動画アップ】Roblox Studio:ロブロックスでLua言語を学ぶ!パーツ接触イベントでプレイヤーの能力を変えるコード解説!

KIDSPROのYouTubeチャンネルに、Roblox Studioでパーツ接触イベントでプレイヤーの能力を変えるやり方をアップしました。
Obbyなどのゲームを作るとき、あるパーツに触れたらプレイヤーが無効状態になったり、移動速度が速くなったり、ジャンプ力が上がったり、身体が小さくなるスクリプトを作るとより楽しいゲームになるのではないでしょうか。

Roblox Studio:パーツ接触イベントでプレイヤーの能力を変えるやり方

Roblox Studio: パーツ接触イベントでプレイヤーの能力を変えるやり方

STEP.1
Roblox Studioを開き、Baseplateをクリック

Roblox Studioが開いたら、「Baseplate」プロジェクトをクリックして開いて下さい。

STEP.2
エクスプローラ、プロパティ、出力画面を表示

Robloxプロジェクトが立ち上がったら、「エクスプローラ」「プロパティ」「出力」ウィンドウを開く。

※もしもこれらのウィンドウが表示されていなければ、「表示」メニュータブをクリックして、画面左上の  (出力ウィンドウ)をクリックして下さい。

STEP.3
ゲームにパーツブロック(オブジェクト)を出す

  1. 「ホーム」メニュータブをクリックする
  2. 「パーツ」をクリックするとプロダウンメニューが表示される
  3. 「ブロック」を選ぶ
    ※STEP.4の画像のようにパーツブロック(オブジェクト)がゲームに追加されます。
パーツを動かし、「アンカー」する

  1. 「ホーム」メニュータブの「移動」ボタンをクリックすると移動用のギズモ(赤、青、緑の矢印)が表示される
  2. ギズモ(矢印部分)をドラッグして「パーツブロック」を動かす
  3. 「ホーム」メニュータブの「アンカー」ボタンをクリックする
    ※パーツブロックを選択した状態で「アンカー」ボタンをクリックすることにより、ゲームプレイ中にパーツブロックは動かなくなります。もしも、空中にある状態でアンカーすれば、パーツブロックは空中に固定されます。
STEP.5
エクスプローラ画面の「Part」アイコンのプラスマークをクリック

エクスプローラウィンドウの「Part」アイコンの上にマウスポインターを移動すると、➕️マークが表示されるので、その➕️マークをクリックする。
※STEP.6の画像のようプルダウンメニューが表示される。

STEP.6
「Script」オブジェクトを選択する

「Script」オブジェクトを選択する。

※もしも、「Script」オブジェクトが見つからない場合には、検索窓でScriptと検索して下さい。

STEP.7
「Script」エディターが開く


Scriptエディターが開き、「print(“Hello world!”)」と記述されたスクリプトが含まれる新しいScriptオブジェクトが作成される。

STEP.8
プリント関数print(“Hello world!”)を削除

プリント関数print(“Hello world!”)を削除する。
STEP.9
パーツを変数「Part」として参照出来るスクリプト

スクリプトをアタッチしたパーツをローカル変数「part」として参照できるようにするスクリプトを追加する。

スクリプト1

local part = script.Parent

STEP.10
パーツに触れたオブジェクトを検出する関数を定義する

パーツに触れたオブジェクトを検出する関数を定義する。

スクリプト2

local function onTouch(hit)

 

end

STEP.11
パーツに触れたエンティティの親オブジェクトを変数に代入

パーツに触れたエンティティの親オブジェクトを取得し、ローカル変数「character」に代入する。通常はキャラクターのモデルが代入されることになる。

スクリプト3

local character = hit.Parent

STEP.12
変数「character」からHumanoidクラスのオブジェクトを検索
STEP.11のローカル変数「character」が持つ子オブジェクトの中からHumanoidクラスのオブジェクトを検索する。もしもHumanoidオブジェクトが見つかれば、そのオブジェクトをローカル変数「humanoid」に代入する。もし見つからなければ、変数「humanoid」はnil(何もない状態)になる。

スクリプト4

local humanoid = character:FindFirstChildOfClass(“Humanoid”)

※大文字と小文字を間違うとスクリプトは正しく動きませんので、注意して下さい。

STEP.13
Humanoidクラスのオブジェクトが存在していたら実行する条件文
ローカル変数humanoidにHumanoidクラスのオブジェクトが存在していたら実行する条件文を追加する。

スクリプト5

if humanoid then

 

end

STEP.14
スクリプトのチェック用に条件文にPrint関数を追加
条件文の真偽条件がTrueなら、print(“Humanoidがタッチした!”)が実行されるスクリプトを追加する。

スクリプト6

print(“Humanoidがタッチした!”)

※ここでPrint関数を追加した理由は、以下に説明するSTEP.16で、実態にパーツ接触イベントが正しく動いているかチェックするためです。一時的に追加したもので、正しく動くことが確認できたらPrint関数は削除します。

STEP.15
onTouch関数が呼び出されるスクリプトを追加
スクリプトをアタッチしたパーツに何らかのオブジェクトが接触する度にonTouch関数が呼び出されるスクリプトを追加する。

スクリプト7

part.Touched:Connect(onTouch)

STEP.16
パーツ接触イベントが正しく動作するか確認

  1. ステージ上のプレイボタンをクリックして、ゲームをスタートする
  2. プレイヤー(アバター)をWASDキーで操作(視点はマウス右クリックで変える)して、スクリプトをアタッチしたパーツまで動かす
  3. プレイヤー(アバター)がそのパーツに触れると、「Humanoidがタッチした!」が出力画面に表示される
    ※もし出力画面に「Humanoidがタッチした!」と表示されず、代わりに赤文字でエラーが表示された場合は、その赤文字をクリックしてください。これにより、カーソルがエラーの原因となっているスクリプトの該当部分にジャンプします。その後、スクリプトに誤りがないか、特に「大文字と小文字の違い」や「変数名に誤りがないか」を確認してみてください。

スクリプト1-7により、スクリプトがアタッチされたパーツに触れたオブジェクトがHumanoidクラスの子オブジェクトを持っている場合(例えば、プレイヤーやゾンビなどのキャラクターであれば)、IF条件文内のprint関数が実行されます。STEP.17以降では、このIF条件文内のスクリプトを変更し、パーツに触れたプレイヤー(キャラクター)のスピード、ジャンプ力、身体の大きさを変更する方法を説明します。

STEP.17
パーツに触れたら実行するスクリプトを変更する

スクリプトがアタッチされたパーツに触れたオブジェクトがプレイヤーやゾンビなどのキャラクターである場合、以下の4つのスクリプトをIF条件文内に追加しましょう。これにより、Humanoidオブジェクトのプロパティが変更されます。

  1. Healthプロパティ: 値を0に設定し、キャラクターを無効化する
  2. WalkSpeedプロパティ: 値を100に設定し、移動速度を速くする
  3. JumpHeightプロパティ: 値を100に設定し、ジャンプ力を高める
  4. BodyWidthScale.Valueプロパティ: 値を0.5に設定し、身体の大きさを小さくする
STEP.17-A
パーツに触れたら無効化されるスクリプトに変更する

以下のスクリプトをIF条件文に追加する。

追加スクリプトA

humanoid.Health = 0

スクリプトがアタッチされたパーツにプレイヤーやゾンビなどのキャラクターが触れると、Healthプロパティ: 値が0になり、キャラクターが無効化されます。

STEP.17-B
パーツに触れたら移動速度を速くするスクリプトに変更する

以下のスクリプトをIF条件文に追加する。

追加スクリプトB

humanoid.WalkSpeed = 100

スクリプトがアタッチされたパーツにプレイヤーやゾンビなどのキャラクターが触れると、WalkSpeedプロパティ: 値が100になり、キャラクターの移動速度が速くなる。

STEP.17-C
パーツに触れたらジャンプ力が高くなるスクリプトに変更する

以下のスクリプトをIF条件文に追加する。

追加スクリプトC

humanoid.JumpHeight = 100

スクリプトがアタッチされたパーツにプレイヤーやゾンビなどのキャラクターが触れると、JumpHeightプロパティ: 値が100になり、キャラクターのジャンプ力が高くなる。

STEP.17-D
パーツに触れたら身体が小さくなるスクリプトに変更する

以下のスクリプトをIF条件文に追加する。

追加スクリプトD

humanoid.BodyWidthScale.Value = 0.5

humanoid.BodyHeightScale.Value = 0.5

humanoid.BodyDepthScale.Value = 0.5

— humanoid.HeadScale.Value = 0.5も追加すれば、キャラクターの顔も小さくなります。

スクリプトがアタッチされたパーツにプレイヤーやゾンビなどのキャラクターが触れると、BodyWidthScale.Value, BodyHeightScale.Value, BodyDepthScale.Valueプロパティの値が0.5になり、キャラクターの身体の大きさが小さくなります。humanoid.HeadScale.Value = 0.5も追加すれば、キャラクターの顔も小さくなります。

Roblox Studioとは?

Roblox Studioは、Roblox用の カスタムゲームを作成できる公式の無料 ユーティリティソフトウェア。ミニゲーム、障害物コース、ロールプレイングストーリーなど、さまざまなゲーム作ることが出来ます 。プログラミング言語Luaを利用してプログラミングします。Robux(ロバックス)と呼ばれる仮想キャッシュを、ゲーム内アイテムに対して使用することで収益を得る仕組みを構築することも出来るので、子供たちはゲーム開発を通じでビジネスの感覚が身につけられる。

Robloxとは?

Robloxは、ユーザーがRoblox Studioを使ってゲームをプログラムしたり、他のユーザーが作成したゲームをプレイしたりできるオンラインゲーミングプラットフォームおよびゲーム作成システムです。