前回までの作業がまだ済んでいない場合は、ブロック崩しの作成方法から前回までのチュートリアルを先に済ませてください。
ここでは、Blockの挙動を作成します。
Blockは何かが当たった場合に自オブジェクトを破棄する挙動とします。
今回はボール以外に当たるものがないため、当たった対象の判定は省きます。
Blockオブジェクトはプレハブとして用意しており、オブジェクトを使いまわす想定になっています。
ここでは直接Logic Behaviorを使用せず、Logic AssetをLogic Playerで再生する形式で挙動の使いまわしも行ってみましょう。
アセットの作成
Logicフォルダの作成
Logic Toolkit関連アセットの保存先フォルダを作成します。
名前は何でもよいですが、今回はLogic
というフォルダを作成することにします。
- ProjectウィンドウのBlockBreakingフォルダを選択
- +ボタンをクリック
- メニューからFolderを選択
- 名前を
Logic
に変更
Logic Assetの作成
- ProjectウィンドウでLogicフォルダを選択
- +ボタンをクリック
- メニューからLogic Toolkit/Logic Assetを選択
- 名前を
Block Logic
に変更 - Logic AssetのEditボタンをクリックし、Logic Editorウィンドウを開く
Block Logicの編集
PubOnCollisionEnter.Callbackノードの作成
- Startノードを削除
- グラフ上をクリックしフォーカスがある状態で
Spaceキー
を押し、ノード作成メニューを開く - Scriptsタブを選択
- 検索欄に
OnCollisionEnter Callback
と入力 - 一覧からPubOnCollisionEnter.Callback (Event)を選択
PubOnCollisionEnter.Callbackノードの編集
- TargetフィールドのRequireをチェック
GameObject.Destroyノードの作成
- PubOnCollisionEnter.Callbackノードの実行ポートをドラッグ&ドロップし、ノード作成メニューを開く
- Scriptsタブを選択
- 検索欄に
Destroy
と入力 - 一覧からGameObject.Destory(gameObject) (Action)を選択
UnityのDestroyメソッドはObject.Destroy(Object)
なのですが、InputGameObject
でSelfオブジェクトも指定できたほうが便利なため、組み込みとしてGameObject.Destroy(GameObject)を行うスクリプトを用意しています。
グループにまとめる(任意)
- 作成した2つのノードをすべて選択した状態で、
Gキー
を押しグループノードを作成 - 名前を
OnCollisionEnter
に変更 - グループノードをマウスオーバーした際に表示される
...
アイコンをクリック - コメントに
If this block is hit by something (only the ball this time), it will destroy itself.
と入力
BlockにLogic Playerを設定
Blockをプレハブモードで開く
- ProjectウィンドウのAssets/BlockBreaking/Prefabs/Blockプレハブをダブルクリック
Logic Playerを追加
- HierarchyウィンドウのBlockオブジェクトを選択
- InspectorウィンドウのAdd Componentボタンをクリック
- コンポーネント追加メニューからLogic Toolkit/Logic Playerを選択し、Logic Playerコンポーネントを追加
Logic Playerコンポーネントの編集
- AssetフィールドにBlock Logicを設定
プレハブモードの終了と保存
- Hierarchyのプレハブのヘッダ部の<ボタンをクリック
- 保存するかのダイアログが表示されるのでSaveボタンをクリック
Blockの挙動確認
ここまで作成するとグラフは以下のようになっています。
プレイ開始してBlockの挙動を確認します。
- Ballが当たった際にBlockオブジェクトが破棄されることを確認
次回
次回は4. ゲームクリア判定の作成を行います。
完了を投稿
ここまでの作業完了をSNSに投稿する場合はこちら。