こんにちは、カバゴトです!今回は、Unity当たり判定を付ける方法について超初心者向けに解説していきたいと思います。
Colliderとは
Colliderとは、ゲーム内の物体同士が互いに衝突したり、物理的な動きをするための要素です。
上の赤い枠で囲まれているところで設定します。
当たり判定とは
Colliderを使うことで当たり判定を出すことができます。Collider有りと無しで比較してみましょう。今回はRigidBodyと組み合わせて台の上に球体がどうなるのかを試してみます。
RigidBodyが分からない方は下の記事を参考にしてみてください。
違いが分かりましたか?Collider有りの方はプレートの上で衝突していますが、Collider無しの方はプレートを貫通しています。この場合、物体と物体が衝突したことを検知したことになります。
「もし当たったら、~する」を設定する方法
Colliderはゲームを開発するときに、非常に便利な機能となっています。例えば、ゲーム内でアイテムを拾ったら、アイテム自体は消えて、アイテムがプレイヤーのボックスなどに入っていますよね?
このように、「もし当たったら、~する」を使うときには「IsTrigger」を使います。
IsTriggerは、物体が衝突したことを検知するだけで、実際に衝突させるものではありません。
実際に具体例を出します。
上の画像では赤い球体が「Cube」に当たると、「Cube」が消えるようにしました。作り方としては、
- 赤い球体とCubeを準備する
- 「Cube」にIsTriggerを付ける
- 赤い球体にタグとRigidbodyをつける
- 「もし、当たったら消える」という内容をスクリプトに書く
- 実行
これを応用すると、シューティングゲームや先ほどのアイテム回収などができるようになります!
IsTriggerを用いた具体例
では、先ほどの画像の具体的な作成方法について解説します!
赤い球体とCubeを準備する
ここまでの操作が分からない人は、下の記事を参考にしてみてください!
今回分かりやすいように、Cubeを赤色に設定しましたが、別に色は付けなくてもいいです。
「Cube」にIsTriggerを付ける
右のBoxColliderのところに「IsTrigger」があるので、そこにチェックを入れましょう。
赤い球体にタグとRigidbodyをつける
右上の「Untagged」をクリックし、「Add Tag」をクリックします。
すると、右側の「+」をクリックすると、タグの名前を付けることができます!(私は「Sphere」にしました。)
そして、また、「Sphere」を選択しましょう!(各自付けた名前が候補に挙がってくると思うので、それを選択しましょう)
次に、重力をつけます。
「Sphere」に「Component」→「Physics」→「Rigidbody」で重力を付けます。
「もし、当たったら消える」という内容をスクリプトに書く
次にスクリプトを作ります。スクリプトの作り方が分からない人は、下の記事を参考にしてみてください。
まずは、「Asset」→「Create」→「C#Script」でスクリプトを作成します。作成出来たら、名前を付けましょう。
(私は「change」にしました。)
スクリプトをクリックし、「Open」をクリックし、VisualStudioを起動しましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class vanish : MonoBehaviour
{
// Start is called before the first frame update
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Sphere"))//各自タグに付けた名前を()の中に入れてください
{
// Sphereに触れた場合の処理
// 例: アイテムを消す
Destroy(gameObject);
}
}
}
そして、上のコードを書いてください。(保存を忘れずに!)
//…の部分は写さなくていいです。保存(Ctrl+S)を忘れずにしましょう!
作ったスクリプトを、「Cube」に入れましょう!
これで、完了です!
実行
では、実際に実行してみましょう!
赤い球体が落ちると、「Cube」が消えています!
終わりに
最後まで読んでくださりありがとうございます!今回は、Unityで当たり判定を付ける方法について解説しました。
もし、うまくいない場合や意見等あればコメントの方をよろしくお願いします!
この記事が参考になれば幸いです。また、次回のブログでお会いしましょう!
コメント