0:00:00.000,0:00:02.084 コライダとは、 0:00:02.084,0:00:03.874 ゲームオブジェクトにアタッチすると 0:00:03.874,0:00:05.585 他のコライダに反応するコンポーネントであり、 0:00:05.585,0:00:07.585 そのためには衝突するゲームオブジェクトのどちらかが 0:00:07.585,0:00:09.585 Rigidbody コンポーネントをアタッチされている必要があります。 0:00:10.209,0:00:12.828 コライダには様々な形状や種類があり、 0:00:12.828,0:00:14.828 緑色のラインに囲われて 0:00:14.828,0:00:16.235 シーンビューで描画されます。 0:00:16.459,0:00:18.982 形状は次に挙げるプリミティブ (原始図形) のいずれかです: 0:00:18.982,0:00:31.062 Sphere, Capsule, Box です。 0:00:32.663,0:00:35.273 より複雑な形状には二つのオプションがあります。 0:00:35.474,0:00:37.406 これらのプリミティブ形状のいずれかを 0:00:37.406,0:00:39.708 組み合わせるために、別のオブジェクトに 0:00:41.730,0:00:42.852 プリミティブ コライダを Hierarchy 上で 0:00:39.708,0:00:41.730 適用します。 0:00:42.852,0:00:44.852 この workbench オブジェクトには 0:00:44.852,0:00:46.852 複数のオブジェクトがあり、 0:00:46.852,0:00:49.156 いくつかのエリアの 0:00:49.156,0:00:50.682 別のコライダからなっています。 0:00:50.782,0:00:54.156 もうひとつのオプションはメッシュ コライダを使用することであり、 0:00:54.156,0:00:55.988 これにより指定したメッシュの形状に 0:00:55.988,0:00:57.686 完全に一致します。 0:00:58.186,0:01:00.620 右の workbench オブジェクトには階層はなく 0:01:00.620,0:01:02.620 その代わりにメッシュ コライダを使用します。 0:01:02.620,0:01:04.620 メッシュ コライダを使用しない理由は、 0:01:04.620,0:01:06.620 指定したメッシュの形状と完全に 0:01:06.620,0:01:08.620 一致するためです。 0:01:08.620,0:01:11.073 つまり、複雑なモデルのメッシュを指定すると 0:01:11.073,0:01:13.073 複雑すぎるコリジョン メッシュを提供するかもしれず 0:01:13.073,0:01:15.611 パフォーマンスに影響します。 0:01:15.794,0:01:17.693 複合的なセットアップを使用したほうが 0:01:17.693,0:01:19.693 良い理由はこのためです。 0:01:20.076,0:01:21.840 しかしコリジョンする物体を作成するには 0:01:21.840,0:01:24.463 3 つめの選択肢があり、 0:01:24.463,0:01:26.861 別のよりシンプルな物体に修正して 0:01:26.861,0:01:29.664 メッシュ コライダを使用する方法です。 0:01:29.997,0:01:32.248 この例では、複雑なロボット アームの 0:01:32.248,0:01:33.997 アセットがあります。 0:01:34.331,0:01:36.196 これは非常に複雑なメッシュですが 0:01:36.196,0:01:38.196 衝突の際にここまで複雑な 0:01:38.196,0:01:39.929 メッシュは必要ではありません。 0:01:40.162,0:01:43.428 ここでは 0:01:43.428,0:01:45.827 二個目の物体のセットを作成して 0:01:45.827,0:01:48.279 一連のメッシュ コライダに適用してます。 0:01:48.279,0:01:50.279 例えば爪のこの部分は 0:01:50.279,0:01:51.809 そのために作成したコリジョン メッシュよりも 0:01:51.809,0:01:53.275 複雑です。 0:01:53.625,0:01:55.547 二つの別の FBX ファイルで行われてます。 0:01:55.547,0:01:59.642 元のモデル作品と物体をローポリにした物体の 0:01:59.642,0:02:01.557 二つです。 0:02:01.742,0:02:03.591 それから各々を見ていって、 0:02:03.591,0:02:05.591 メッシュ コライダを適用して 0:02:05.591,0:02:07.524 使用するコリジョン メッシュとして 0:02:07.524,0:02:09.121 ドラッグしてます。 0:02:09.206,0:02:10.935 整理するとパフォーマンスのオーバーヘッドなく 0:02:10.935,0:02:12.935 衝突という意味で必要な正確性が 0:02:12.935,0:02:14.935 得られるということです。 0:02:15.602,0:02:17.602 ゲームエンジンで衝突が起こるとき 0:02:17.602,0:02:20.024 ひとつのコライダが別のものと衝突して、 0:02:20.024,0:02:22.024 OnCollisionEnter がコールされます。 0:02:22.307,0:02:26.087 このシーンにおいて prop samoflange オブジェクトには 0:02:26.087,0:02:28.928 別の Sphere Collider コンポーネントおよび Rigidbody コンポーネントがあります。 0:02:29.061,0:02:31.695 Rigidbody は重量(mass)および重力(gravity)を提供します。 0:02:31.961,0:02:34.378 ゲームを再生するとき、ひとつが 0:02:34.378,0:02:36.108 倒れて、もう片方に衝突します。 0:02:36.608,0:02:39.725 powerCube は Box Collider がアタッチされています。 0:02:43.061,0:02:45.533 これは 落下するオブジェクトにも 0:02:45.533,0:02:47.334 アタッチされています。 0:02:47.733,0:02:50.383 スクリプトは三つの衝突イベントを検知します。 0:02:50.383,0:02:53.573 OnCollisionEnter, OnCollisionStay および 0:02:53.573,0:02:54.935 OnCollisionExit です。 0:02:55.135,0:02:57.135 これらの 各々が発生するとき、 0:02:57.135,0:02:59.418 Debug.Log を使用してコンソールに書き込みを行ないます。 0:02:59.568,0:03:01.805 Enter がコールされたとき、 0:03:01.805,0:03:03.805 Stay が発生したとき、 0:03:03.805,0:03:05.805 また、Exit がコールされたときに登録されます。 0:03:09.809,0:03:11.936 もしコンソールをみれば 0:03:11.936,0:03:14.477 Enter がコールされたか、Stay がしばらくの間発生したか、 0:03:14.477,0:03:16.946 また、Exit がコールされたか確認することが出来ます。 0:03:17.162,0:03:19.635 もしゲームをポーズして再生すると、 0:03:19.635,0:03:21.635 このサンプルをゆっくりと眺めることが出来ます。 0:03:22.135,0:03:24.431 コリジョンが発生したときに 0:03:25.682,0:03:27.429 フレームごとにステップ実行すると 0:03:27.429,0:03:30.315 OnCollisionEnter がコールされているので、OnCollisionEnter は 0:03:30.315,0:03:32.315 発生した直後です。 0:03:32.815,0:03:36.509 その後続けると、OnCollisionStay が発生しています。 0:03:37.259,0:03:39.027 この右側で、 0:03:39.027,0:03:41.027 二つのコライダがまだ衝突中であるため 0:03:41.027,0:03:43.344 数回これが発生していることを確認できます。 0:03:43.344,0:03:45.344 その後続けてステップ実行すると 0:03:45.344,0:03:48.126 最終的に二つのコライダが衝突しなくなったとき 0:03:48.126,0:03:49.925 OnCollisionExit が 0:03:49.925,0:03:51.925 コールされます。 0:03:53.142,0:03:54.906 OnCollision メッセージが送信されるためには 0:03:54.906,0:03:57.461 衝突する二つのオブジェクトの一つに 0:03:57.461,0:04:00.016 Rigidbody コンポーネントがアタッチされている必要があります。[br](翻訳:gamesonytablet)