【応用】2.ツール(Tools)

応用編

こんにちは、ロブスタのハルです。
前回はオブジェクトブラウザについて紹介しました。
今回はツール(Tools)について解説したいと思います。

前回の記事を読んでいない方はこちらからどうぞ。

Toolsとは

プレイヤーに持たせたいものがあるとき、Toolsツールズを使うことでそれを作ることができます。
例えば、武器ぶきや道具などですね。

Toolsの呼び出し方

Toolsはエクスプローラ上で呼び出すことができます。
例えば、Workspaceワークスペースの+マークをクリックしてみましょう。
その中にあるToolツールというものがToolsになります。

選択すると以下のようにWorkspaceの子としてToolが作られます。

演習:棒を持たせよう

ここでは練習としてプレイヤーに棒を持たせてみましょう。

棒の作成

まずは先ほど追加したToolの名前をSwordソードに変更します。

さらにSwordの子としてパーツを追加します。このパーツが画面上で棒として表示されるもの(持たせたいもの)になります。今回は円柱のパーツを選びました。

ここで重要なことが1つあります。それは持たせたいパーツの名前をHandleハンドルにしなければならないということです。こうしないとうまく認識してくれなくなります。

それでは棒の形状を整えていきましょう。

動作確認

動作確認の前にやることがあります。
完成したSwordをStarterPackスターターパックの子に移動してください。ドラッグアンドドロップで移動できます。

こうすることでゲームが開始したときにプレイヤーが棒を持った状態となります(正確には持ち物としてバックパックに入った状態)。

それではテストしてみましょう。

画面下によく見る形でSwordがあることがわかります。
これを選択せんたくすると上の画像のようにプレイヤーが棒を持ちます。

Toolsで使えるイベント

Toolsには使えるイベントがあります。
とりあえず前回学んだオブジェクトブラウザを使って調べてみましょう。

まずは概要がいようについてですが、”An object, such as a weapon, that can be equipped by a Humanoid.”と書かれています。これは”Humanoidが装備そうびできる武器のようなオブジェクト”ということを意味しています。

続いてイベントですが、たくさんありますね。今回はActivatedアクティベーテッド, Deactivatedデアクティベーテッド, Equippedエクイップド, Unequippedアンエクイップドの4つについて見ていきたいと思います。

4つの基本イベント

Activated, Deactivated, Equipped, Unequippedはそれぞれクリックをするためにマウスの左ボタンを押した時、クリックし終わって左ボタンから手がはなされた時、装備された時、装備が解除された時に実行されるイベントです。

以下のコードで確認してみましょう。
Swordの子としてScriptスクリプトを追加し、その中にコードを書いてください。

local sword = script.Parent

sword.Activated:Connect(function()
    print("クリックされました")
end)

sword.Deactivated:Connect(function()
    print("手が離されました")
end)

sword.Equipped:Connect(function()
    print("装備されました")
end)

sword.Unequipped:Connect(function()
    print("装備が解除されました")
end)

まず1行目ではスクリプトの親であるSwordをswordという変数に代入しています。

それ以降は4つのイベントをそれぞれ設定しています。

実際にテストプレイを行ない、画面をクリックしたとき、Swordを装備したときと解除したときにprint文の中身が表示されることが確認できたかと思います。

演習:棒を装備した状態でクリックしたときに敵を消す

タイトルの通りなんですが、Swordを装備した状態でクリックしたときに敵をゲームから消すようなプログラムを書きたいと思います。

Lua言語講座と合わせて今までの知識で書けると思います。

今回使うものとしてはまずSword、そしてクリックしたことを検知するためにActivatedイベント、ついでに敵パーツ、消すためのDestroyメソッドの4つですね。

まずはWorkspaceの子として適当なパーツを用意しましょう。
今回はこの壁みたいなものを敵とします。名前はEnemyエネミーとしておきました。

続いてプログラムを書きます。

local sword = script.Parent

sword.Activated:Connect(function()
	local enemy = workspace.Enemy
	enemy:Destroy()
end)

1行目では先ほどのコードと同じくSwordを変数に格納しています。

3行目以降はActivatedイベントとなっており、その中でworkspaceの子であるEnemyパートを変数enemyに格納しています。

5行目ではActivatedによって実行されるイベントリスナーとしてenemyにDestroyメソッドをつけることでenemyを消すという処理をしています。

コードが書けたらテストしてみましょう。

Swordを装備していない状態で画面をクリックしても何も起きませんが、装備してから画面をクリックすると敵パーツが消えているのが確認できます。

もう一度クリックするとエラーが出ますが、それは”EnemyというパーツがWorkspaceの子にないよ”と言っているだけなので安心してください。むしろきちんと消えていることの証拠になります。

最後に

今回はToolsという機能について解説しました。
武器に限らずアイテムを持たせたい場合には必須ひっすの機能となります。
基本的な使い方をマスターしてゲーム開発に役立ててくださいね。

より詳しい使い方は公式リファレンスのこちらのページ参照さんしょうしてください。

コメント

タイトルとURLをコピーしました