5. ゴールを作ろう

プリミティブでゴールの旗を作ろう

配布終了やUnityのバージョン違いに左右されないように、Unity標準のCubeを組み合わせて旗を作ります。

  1. Hierarchyウィンドウで右クリックし、Create Emptyを選ぶ
  2. 作成したGameObjectをGoalへリネームし、TransformをResetする
  3. Goalの子にCubeを2つ作り、片方を細長いポール、もう片方を薄い旗の形にする
  4. 旗のCubeへ目立つ色のMaterialを設定する

できたGoalを、迷路のゴールにしたい位置へ移動します。見た目は後から自由に作り替えられます。

Colliderで旗に当たり判定をつけよう

親のGoalには当たり判定がないため、Box Colliderを追加します。

ゴールの旗を選択した状態でインスペクタウィンドウのAdd Componentから追加する事ができます。

追加したBox Colliderは、選択した状態でSceneビューを見ると緑色の枠で確認できます。 Edit Collider、Size、Centerを使って、ボールが通過する範囲に調整します。最後にIs Triggerへチェックを入れます。

当たったときのプログラムを書こう

GoalというC#ファイルを作成して、さきほどの旗にアタッチします。

当たり判定はOnTriggerEnterというメソッドを使用します。 下記のスクリプトを追加してみましょう。

using UnityEngine;

public class Goal : MonoBehaviour
{
    // 当たり判定
    void OnTriggerEnter(Collider other)
    {
        // ログを出力
        print("当たったで〜");
    }
}

再生するとボールが当たった時にConsoleウィンドウにprintの内容が出力されるのがわかるかと思います。

スクリプトの追加方法を忘れてしまった場合は、以下のページで復習しましょう。

4. スクリプトを追加しよう

ヒエラルキーウィンドウを整理しよう

ここらでヒエラルキーウィンドウが煩雑になってきているので整理しておきましょう。 下記の方法で新規のGameObjectが作成できます。

  • ヒエラルキーウィンドウでCreate > Create Empty
  • ヒエラルキーウィンドウで右クリックからCreate Empty
  • ショートカット、Cmd + Shift + N

GameObjectは通常はTransformやCollider、Rigidbodyなど、様々な機能をアタッチする入れ物 として使われますが、ここでは Finderのフォルダ機能のように入れ子にして様々なオブジェクトを格納する入れ物 として利用します。

今作成したGameObjectにはステージとして使用するオブジェクトを格納します。Stageとリネームしておきましょう。

そしてまず、Transformの位置をリセットします。 生成されたGameObjectはシーンビュー上の表示上の中心に配置されるので、座標で見ると結構変な位置に配置されていたりします。

InspectorウィンドウのTransformコンポーネント右上にあるメニュー(⋮)からResetを選びます。

あとは、ヒエラルキーウィンドウ上で、Floor、Goal、WallなどをStageの中にドラッグして格納していきましょう。

できたか確認しよう