こんにちは、ロブスタのハルです。
前回はオブジェクトブラウザについて紹介しました。
今回はツール(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という機能について解説しました。
武器に限らずアイテムを持たせたい場合には必須の機能となります。
基本的な使い方をマスターしてゲーム開発に役立ててくださいね。
より詳しい使い方は公式リファレンスのこちらのページを参照してください。
コメント