5. ゴールを作ろう

Asset Storeで旗を探してみよう

検索ウィンドウにflagなど入力してみると色々出てきます。 ここでは無料のアセット、Cloth animation based Flagを使用してみようと思います。

3Dモデルを配置しよう

落としてきたアセットをステージに配置します。Transformをゴールを配置したい位置に移動させ、Goalという名前にリネームしておきましょう。

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

インポートした旗は、メッシュとアニメーション用のスクリプトで構成されているので、当たり判定がありません。Colliderで当たり判定を作成しましょう。

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

追加したBox Colliderは選択した状態でSceneビューを見ると緑の線で型どられて確認する事ができるようになっています。 SizeやCenterで位置を調整して、最後にIs Triggerにチェックを入れて当たり判定を追加しておきましょう。

当たった時のプログラムを書いてみよう

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

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

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

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

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

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

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

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

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

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

インスペクタウィンドウのギアアイコンをクリックし、Resetをクリックしましょう。

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