3. Blockの挙動作成

前回までの作業がまだ済んでいない場合は、ブロック崩しの作成方法から前回までのチュートリアルを先に済ませてください。

ここでは、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に投稿する場合はこちら。