どうも音無サノトです(^^♪
週末はゲーム制作を行っていまーす。Unity の公式チュートリアルを淡々とやっており、前回まではアイテムの設置まで行ったので、今度は取得の部分を実装します。
衝突時の処理を追加
まず、前回 Player を非アクティブ状態にしているので、アクティブ状態に戻します。
Player を選択し、Inspector ウィンドウの名前の左側にあるボックスにチェックを入れます。
これで、Player が再びゲーム画面に表示されました。
この Player を操作して、前回までに制作したアイテム(Pick Up)に衝突したとき、 Pick Up を非アクティブ状態にする様にスクリプトを変更します。
Unity には衝突判定の際に使用する形状をコライダーと呼ばれるもので定義しており、これを利用すると簡単に衝突時の処理が書けます。
今回の Player の場合はこれ。
「Sphere Collider」というのが元からついています。この部分が他のオブジェクトに衝突した際に判定される範囲になります。
試しに Mesh Renderer のチェックを外すと、衝突判定に範囲が緑色で表示されているのが分かります。
赤矢印のチェックを外すと
Player の緑色の枠が見える。
ここが衝突判定の範囲になります。
Unity には様々な形状のコライダーが用意されているので、使用するオブジェクトに合わせて、適している形状のコライダーをアタッチします。
それではスクリプトを変更します。
OnTriggerEnter という関数を用意して処理を追加します。
まず OnTriggerEnter() という関数は物体が衝突した際に呼ばれるものです。
この場合、スクリプトを適用した Player というオブジェクトが他のオブジェクトに衝突した際に呼ばれます。
そして、衝突したオブジェクトが other という変数に格納されるイメージです。
次の if 文で CompareTag() という関数を使って、衝突したオブジェクトのタグが Pick Up かどうかを確認しています。タグについてはのちほど。
そして、SetActive() 関数でそのオブジェクトを非アクティブ状態にしています。
これで Player の処理は完了です。
ただ、この段階ではアイテムに衝突しても何も起きません。
なぜならアイテムのオブジェクトのタグを変更していないからです。
なので次はアイテムのタグを変更しましょう。
タグの変更
まず Project ウィンドウ内にあるプレハブの Pick Up を選択します。
Inspector ウィンドウを見てみると、名前の下に Tag という欄があることが分かります。
Unity ではこのタグを変更することでオブジェクトを識別することができます。
今回なら、衝突したオブジェクトのタグが Pick Up だったら非アクティブ状態にする処理を実行するが、それ以外なら何もしない、ということができます。
それでは新しくタグを追加しましょう。
タグ欄のところをクリックし、Add Tag… を選択します。
List is Empty というところの+部分をクリックして、
Pick Up という名前のタグを新しく入力して Save を押します。
これでタグが追加されたので、先ほどと同じように Pick Up のプレハブをクリックしてタグを変更します。
これですべてのアイテムのタグが Pick Up に変更されます。
ただし、この状態でもまだアイテムの取得処理はできません。
衝突時にトリガーを使用しているので、トリガーの状態をオンにしておく必要があります。
Pick Up の Box Collider の Is Triger にチェックを入れます。
これで衝突時にアイテムのオブジェクトが消えるようになりました。
次回は取得したアイテム数を画面に表示します。
本日は以上となります。最後まで読んでいただきありがとうございました!