【Unity】スマートボールぽいものを作ろう! - ④isTriggerとOnTriggerEnter
前回までのあらすじ。
ボールが発射できるようになりました。
今回は盤面が寂しいのでギミックを追加していきましょう。
まず釘!
GameObject => Create Other => Cylinder で円柱を作ります。
TransformのRotationで盤面に立つように値を調整。Scaleでお好みのでかさにしましょう。
オブジェクト名をCylinderからNailに変更してResorces => Objects にPrefab化。
PrefabからNailオブジェクトを適当に配置してみましょう。
こんな感じになりました。
次にプロペラを作っていきましょう。
まずGameObject => Create Emptyで空のGameObjectを作り、その下に2枚
GameObject => Create Other =>Cubeで新規に立方体を作り、平べったい板になるようにScaleの値を調整します。
Properaオブジェクトの下に板を配置しているのがポイントです。
Properaオブジェクトの方にRigidbodyを追加します。Cubeの方ではないので気をつけてください。
そしてRigidbodyのInspectorでConstraintsを以下のように設定。
Freeze~~は、その軸の移動を制限するという設定です。
上記の場合だと、このProperaオブジェクトはチェックの入っていないZ軸の回転のみ動作するようになります。
設定が終わったらProperaをPrefab化して、適当に盤面に配置しちゃいましょう。
プロペラを使った仕掛けを作れれば面白そうですねー。
次に反射板を作ります。
GameObject => Create Other =>Cubeで新規に立方体を作り、平べったい板になるようにScaleの値を調整します。(Wallの使い回しでもいいです)
その板の名前をRefrectに変更。
ProjectウインドウのScriptsでShoterスクリプトと同じ手順で新規にRefrectスクリプトを作ります。
そのRefrectスクリプト内に以下を追加。
先ほど作ったRefrectオブジェクトにスクリプトを追加。
その後、RefrectオブジェクトのBox ColliderのisTriggerにチェック。
このisTriggerは、他のオブジェクトとの衝突時の物理演算がされなくなる代わりに、衝突時に特定のメソッドを呼び出せるようになります。
これにチェックを入れることにより、ボールとぶつかると先ほどRefrectスクリプトに記述したOnTriggerEnterメソッドが呼ばれる事になります。
これは衝突時に一度だけ呼ばれるメソッドです。
上記の設定ができたら反射板を良さげなところに配置して実行してみましょう。
たまに画面外にぶっとびますがそこはご愛嬌。
最後にゴールを作って次回で締めようと思います。
関連記事一覧:
【Unity】スマートボールぽいものを作ろう! - ①RigidbodyとCollider - Exception[0]
【Unity】スマートボールぽいものを作ろう! - ②TextureとMaterial - Exception[0]
【Unity】スマートボールぽいものを作ろう! - ③PrefabからInstantiateで動的生成 - Exception[0]