この記事はVisual Scripting 入門の第8回です。前回の記事は下記のリンクから確認できます。
本記事は前後編でRaycastとListを使って的あてゲームを作る方法を解説します。
今回(後編)の記事で学べる事
- Raycast
- Destroy
- Listの要素の削除
- Tagの使い方
Raycastを使ってオブジェクトの情報を取得する
Rayとは設定した方向に向けて放つ光線のことで、その光線にあたったオブジェクトの情報を得ることができます。
Variableに、GameObject型の変数[Camera]を追加します
ValueにシーンにあるMainCameraを代入します。
[Camera]をGraph Editorに追加します。
Graph Editorに以下を追加します。
- On Update
- Get Key Down
- If
- Get Mouse Position
- Screen Point To Ray
- RayCast
※ノードの画像はわかりにくいもののみ載せています。
Get Key Down のKeyにMouse 0(左クリック)を入力します。
スクロールしないと表示されないのでGIFをご覧ください。
以下のようにノードを接続します。
Screen Point To Rayはカメラのコンポーネントとマウスの位置を左のポートに接続するとカメラからRayの情報を作成し、Rayの情報をRaycast
接続することでRayを飛ばすことができます。
実際にRayが飛ばせているのか確認します。
Graph Editorに以下のノードを追加します。
- Debug Log(Message)
- Get Collider
- Get Game Object
以下のようにノードを接続します。
Rayに当たったオブジェクトのColliderを取得し、そこからオブジェクトの情報を取得して、的の名前をConsoleに表示します。
シーンを実行します。クリックした的の名前を表示させることができました。
取得したオブジェクトを削除する
ゲームの要素として、まず床を作ります。
Hierarchyの+ボタンをクリックし、3DObject→PlaneをクリックしてPlaneを作ります。
PlaneのTransformを以下のように設定します。
床か的かを判定するために新しいTagを登録します。
Tagとはオブジェクトに種類を付けられる機能で、オブジェクトのTagを判別して処理を変えることができます。
Projectの[Target]プレハブのTagをクリックしAdd Tagをクリックします。
+ボタンをクリックしNew Tag Nameに[Target]と入力して、Saveをクリックします。
これで、新しいTagを登録することができました。
これでプレハブ[Target]は、[Target]というTagが付与されたので、Tagに対して処理できるようになります。
Graph Editorに以下のノードを追加します。
- If×2
- String Literal
- Get Tag
- Equal
- Destroy
- Aot List Remove
※ノードの画像はわかりにくいもののみ載せています。
Variableから[TargetList]を追加します。
以下のようにノードを接続します。Stringには「Target」を入力します。
ノードの説明をします。
- Raycastの右の真ん中のポートはRayがオブジェクトに当たっているか判定するものです。当たっていればTrue、当たっていなければFalseとなります。今回の場合Rayが当たった場合次の処理に進みます。
- GameObjectのTagを取得し、それが[Target]であった場合にTrueになり、次の処理に進みます。
- Removeの左の真ん中のポートに消すオブジェクトが含まれているリストを接続します。
一番下のポートにはリストから消すオブジェクトを接続します。
リストから削除しないとエラーがでてしまうのでオブジェクトを削除する前にリストから削除します。
そして、最後にDestroyの左の下のポートに消すオブジェクトを接続し、削除します。
実行します。
これで完成です。Unity Visual Scripting 入門第3回と第4回をみてスコア機能を付けて見たものが以下になります。
余裕があればぜひ作ってみてください。
完成サンプルは以下にあるのでわからなくなってしまったら確認してください。
https://github.com/Manufuki/HitTargetSample.git
次回の第9回ではVisual Scriptingで音源とアニメーションの再生について紹介します。