unityの当たり判定について
最初に
皆様、明けましておめでとうございます。私は学部一年の比嘉と申すものです。去年からunityを始めたばかりの初心者の私ですが何卒よろしくおねがします。
本題
さて、今回私は様々なゲームで重要になってくる当たり判定についての仕組みについて考えました。そもそも「当たり判定」とはどんなものかと言いますとゲーム内のオブジェクトが何かにぶつかった時に起こる判定のことです。このぶつかった時の判定というのは多少のズレが存在し実際ぶつかったように見えない場合にも当たり判定が発生します。今回はこのズレがどのくらいで発生するのか検証していきたいと思います。
検証方法
画像のように二つのキューブを使い検証します。このキューブの座標をそれぞれ ( 1.0 , 5.0 , 0 ),( 1.0 + X , 5.0 , 0 )に設定して、後者のキューブを落とし観測します。この時、Xの値を0.1から始めどんどん小さくしていき当たり判定が発生するまで続けます。
当たり判定の付け方について
最初にUnityにおいての当たり判定をつけるための手順を説明します。 Unity内にオブジェクトを作成し、そのオブジェクトに「Rigidbody」と「BoxCollider」をつけます。これでオブジェクトに当たり判定がつきました。その後、下のようなプログラムを書きます。 この画像の”void OnCollisionEnter(Collision collision)”で当たった際にConsoleの画面で”HIT”という表示が出るようにします。そしてその下の”this.gameObject.transform.Translate(0, -0.05f, 0)”でこのプログラムがついたオブジェクトをy座標を0.05ずつ落とすようにします。最後にこのプログラムを先ほどの落とす方のキューブにアタッチします。
結果
上の画像のようにX=0.1の時は当たり判定が発生しませんでしたが、X=0,01の時には当たり判定が発生しました。ここからXの値を0.01<X< 0.1で値を変化させて観測してみると... X=0.02を境に当たり判定が発生していることがわかりました。ちなみにX=0.021やX=0.0201で試した時には当たり判定は発生しませんでした。 以上の結果からUnityにおいての当たり判定は0.02のズレがあることがわかりました。これから実際にゲームをUnityで作る際はこのズレに注意しながら作っていきたいと考えました。
最後に、ここまで記事を読んでくださりありがとうございました。