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
は通常はTransform
やCollider
、RigidBody
など、様々な機能をアタッチする入れ物 として使われますが、ここでは Finderのフォルダ機能のように入れ子にして様々なオブジェクトを格納する入れ物 として利用します。
今作成したGameObject
にはステージとして使用するオブジェクトを格納します。Stage
とリネームしておきましょう。
そしてまず、Transform
の位置をリセットします。
生成されたGameObject
はシーンビュー上の表示上の中心に配置されるので、座標で見ると結構変な位置に配置されていたりします。
インスペクタウィンドウのギアアイコンをクリックし、Reset
をクリックしましょう。
あとは、ヒエラルキーウィンドウ上で、Floor
、Goal
、Wall
などをStage
の中にドラッグして格納していきましょう。