Aizu-Progressive xr Lab blog

会津大学のVR部であるA-PxLの部員が持ち回りで投稿していくブログです。部員がそれぞれVRに関する出来事やVRにちなんだことについて学んだことを書いていきます。

「面白法人カヤックVR分室」としても活動しています。詳細はこちら

unityの当たり判定について

最初に

皆様、明けましておめでとうございます。私は学部一年の比嘉と申すものです。去年からunityを始めたばかりの初心者の私ですが何卒よろしくおねがします。

本題

さて、今回私は様々なゲームで重要になってくる当たり判定についての仕組みについて考えました。そもそも「当たり判定」とはどんなものかと言いますとゲーム内のオブジェクトが何かにぶつかった時に起こる判定のことです。このぶつかった時の判定というのは多少のズレが存在し実際ぶつかったように見えない場合にも当たり判定が発生します。今回はこのズレがどのくらいで発生するのか検証していきたいと思います。

検証方法

f:id:aizu-vr:20200106005421p:plain 画像のように二つのキューブを使い検証します。このキューブの座標をそれぞれ ( 1.0 , 5.0 , 0 ),( 1.0 + X , 5.0 , 0 )に設定して、後者のキューブを落とし観測します。この時、Xの値を0.1から始めどんどん小さくしていき当たり判定が発生するまで続けます。

当たり判定の付け方について

最初にUnityにおいての当たり判定をつけるための手順を説明します。 Unity内にオブジェクトを作成し、そのオブジェクトに「Rigidbody」と「BoxCollider」をつけます。これでオブジェクトに当たり判定がつきました。その後、下のようなプログラムを書きます。 f:id:aizu-vr:20200106011006p:plain この画像の”void OnCollisionEnter(Collision collision)”で当たった際にConsoleの画面で”HIT”という表示が出るようにします。そしてその下の”this.gameObject.transform.Translate(0, -0.05f, 0)”でこのプログラムがついたオブジェクトをy座標を0.05ずつ落とすようにします。最後にこのプログラムを先ほどの落とす方のキューブにアタッチします。

結果

f:id:aizu-vr:20200106012816p:plainf:id:aizu-vr:20200106012845p:plain 上の画像のようにX=0.1の時は当たり判定が発生しませんでしたが、X=0,01の時には当たり判定が発生しました。ここからXの値を0.01<X< 0.1で値を変化させて観測してみると... f:id:aizu-vr:20200106005712p:plain X=0.02を境に当たり判定が発生していることがわかりました。ちなみにX=0.021やX=0.0201で試した時には当たり判定は発生しませんでした。 以上の結果からUnityにおいての当たり判定は0.02のズレがあることがわかりました。これから実際にゲームをUnityで作る際はこのズレに注意しながら作っていきたいと考えました。

最後に、ここまで記事を読んでくださりありがとうございました。

会津大学VR部の部員が持ち回りで投稿していくブログです。特にテーマに縛りを設けずに書いていきます!