1 00:00:00,000 --> 00:00:02,084 コライダとは、 2 00:00:02,084 --> 00:00:03,874 ゲームオブジェクトにアタッチすると 3 00:00:03,874 --> 00:00:05,585 他のコライダに反応するコンポーネントであり、 4 00:00:05,585 --> 00:00:07,585 そのためには衝突するゲームオブジェクトのどちらかが 5 00:00:07,585 --> 00:00:09,585 Rigidbody コンポーネントをアタッチされている必要があります。 6 00:00:10,209 --> 00:00:12,828 コライダには様々な形状や種類があり、 7 00:00:12,828 --> 00:00:14,828 緑色のラインに囲われて 8 00:00:14,828 --> 00:00:16,235 シーンビューで描画されます。 9 00:00:16,459 --> 00:00:18,982 形状は次に挙げるプリミティブ (原始図形) のいずれかです: 10 00:00:18,982 --> 00:00:31,062 Sphere, Capsule, Box です。 11 00:00:32,663 --> 00:00:35,273 より複雑な形状には二つのオプションがあります。 12 00:00:35,474 --> 00:00:37,406 これらのプリミティブ形状のいずれかを 13 00:00:37,406 --> 00:00:39,708 組み合わせるために、別のオブジェクトに 14 00:00:41,730 --> 00:00:42,852 プリミティブ コライダを Hierarchy 上で 15 00:00:39,708 --> 00:00:41,730 適用します。 16 00:00:42,852 --> 00:00:44,852 この workbench オブジェクトには 17 00:00:44,852 --> 00:00:46,852 複数のオブジェクトがあり、 18 00:00:46,852 --> 00:00:49,156 いくつかのエリアの 19 00:00:49,156 --> 00:00:50,682 別のコライダからなっています。 20 00:00:50,782 --> 00:00:54,156 もうひとつのオプションはメッシュ コライダを使用することであり、 21 00:00:54,156 --> 00:00:55,988 これにより指定したメッシュの形状に 22 00:00:55,988 --> 00:00:57,686 完全に一致します。 23 00:00:58,186 --> 00:01:00,620 右の workbench オブジェクトには階層はなく 24 00:01:00,620 --> 00:01:02,620 その代わりにメッシュ コライダを使用します。 25 00:01:02,620 --> 00:01:04,620 メッシュ コライダを使用しない理由は、 26 00:01:04,620 --> 00:01:06,620 指定したメッシュの形状と完全に 27 00:01:06,620 --> 00:01:08,620 一致するためです。 28 00:01:08,620 --> 00:01:11,073 つまり、複雑なモデルのメッシュを指定すると 29 00:01:11,073 --> 00:01:13,073 複雑すぎるコリジョン メッシュを提供するかもしれず 30 00:01:13,073 --> 00:01:15,611 パフォーマンスに影響します。 31 00:01:15,794 --> 00:01:17,693 複合的なセットアップを使用したほうが 32 00:01:17,693 --> 00:01:19,693 良い理由はこのためです。 33 00:01:20,076 --> 00:01:21,840 しかしコリジョンする物体を作成するには 34 00:01:21,840 --> 00:01:24,463 3 つめの選択肢があり、 35 00:01:24,463 --> 00:01:26,861 別のよりシンプルな物体に修正して 36 00:01:26,861 --> 00:01:29,664 メッシュ コライダを使用する方法です。 37 00:01:29,997 --> 00:01:32,248 この例では、複雑なロボット アームの 38 00:01:32,248 --> 00:01:33,997 アセットがあります。 39 00:01:34,331 --> 00:01:36,196 これは非常に複雑なメッシュですが 40 00:01:36,196 --> 00:01:38,196 衝突の際にここまで複雑な 41 00:01:38,196 --> 00:01:39,929 メッシュは必要ではありません。 42 00:01:40,162 --> 00:01:43,428 ここでは 43 00:01:43,428 --> 00:01:45,827 二個目の物体のセットを作成して 44 00:01:45,827 --> 00:01:48,279 一連のメッシュ コライダに適用してます。 45 00:01:48,279 --> 00:01:50,279 例えば爪のこの部分は 46 00:01:50,279 --> 00:01:51,809 そのために作成したコリジョン メッシュよりも 47 00:01:51,809 --> 00:01:53,275 複雑です。 48 00:01:53,625 --> 00:01:55,547 二つの別の FBX ファイルで行われてます。 49 00:01:55,547 --> 00:01:59,642 元のモデル作品と物体をローポリにした物体の 50 00:01:59,642 --> 00:02:01,557 二つです。 51 00:02:01,742 --> 00:02:03,591 それから各々を見ていって、 52 00:02:03,591 --> 00:02:05,591 メッシュ コライダを適用して 53 00:02:05,591 --> 00:02:07,524 使用するコリジョン メッシュとして 54 00:02:07,524 --> 00:02:09,121 ドラッグしてます。 55 00:02:09,206 --> 00:02:10,935 整理するとパフォーマンスのオーバーヘッドなく 56 00:02:10,935 --> 00:02:12,935 衝突という意味で必要な正確性が 57 00:02:12,935 --> 00:02:14,935 得られるということです。 58 00:02:15,602 --> 00:02:17,602 ゲームエンジンで衝突が起こるとき 59 00:02:17,602 --> 00:02:20,024 ひとつのコライダが別のものと衝突して、 60 00:02:20,024 --> 00:02:22,024 OnCollisionEnter がコールされます。 61 00:02:22,307 --> 00:02:26,087 このシーンにおいて prop samoflange オブジェクトには 62 00:02:26,087 --> 00:02:28,928 別の Sphere Collider コンポーネントおよび Rigidbody コンポーネントがあります。 63 00:02:29,061 --> 00:02:31,695 Rigidbody は重量(mass)および重力(gravity)を提供します。 64 00:02:31,961 --> 00:02:34,378 ゲームを再生するとき、ひとつが 65 00:02:34,378 --> 00:02:36,108 倒れて、もう片方に衝突します。 66 00:02:36,608 --> 00:02:39,725 powerCube は Box Collider がアタッチされています。 67 00:02:43,061 --> 00:02:45,533 これは 落下するオブジェクトにも 68 00:02:45,533 --> 00:02:47,334 アタッチされています。 69 00:02:47,733 --> 00:02:50,383 スクリプトは三つの衝突イベントを検知します。 70 00:02:50,383 --> 00:02:53,573 OnCollisionEnter, OnCollisionStay および 71 00:02:53,573 --> 00:02:54,935 OnCollisionExit です。 72 00:02:55,135 --> 00:02:57,135 これらの 各々が発生するとき、 73 00:02:57,135 --> 00:02:59,418 Debug.Log を使用してコンソールに書き込みを行ないます。 74 00:02:59,568 --> 00:03:01,805 Enter がコールされたとき、 75 00:03:01,805 --> 00:03:03,805 Stay が発生したとき、 76 00:03:03,805 --> 00:03:05,805 また、Exit がコールされたときに登録されます。 77 00:03:09,809 --> 00:03:11,936 もしコンソールをみれば 78 00:03:11,936 --> 00:03:14,477 Enter がコールされたか、Stay がしばらくの間発生したか、 79 00:03:14,477 --> 00:03:16,946 また、Exit がコールされたか確認することが出来ます。 80 00:03:17,162 --> 00:03:19,635 もしゲームをポーズして再生すると、 81 00:03:19,635 --> 00:03:21,635 このサンプルをゆっくりと眺めることが出来ます。 82 00:03:22,135 --> 00:03:24,431 コリジョンが発生したときに 83 00:03:25,682 --> 00:03:27,429 フレームごとにステップ実行すると 84 00:03:27,429 --> 00:03:30,315 OnCollisionEnter がコールされているので、OnCollisionEnter は 85 00:03:30,315 --> 00:03:32,315 発生した直後です。 86 00:03:32,815 --> 00:03:36,509 その後続けると、OnCollisionStay が発生しています。 87 00:03:37,259 --> 00:03:39,027 この右側で、 88 00:03:39,027 --> 00:03:41,027 二つのコライダがまだ衝突中であるため 89 00:03:41,027 --> 00:03:43,344 数回これが発生していることを確認できます。 90 00:03:43,344 --> 00:03:45,344 その後続けてステップ実行すると 91 00:03:45,344 --> 00:03:48,126 最終的に二つのコライダが衝突しなくなったとき 92 00:03:48,126 --> 00:03:49,925 OnCollisionExit が 93 00:03:49,925 --> 00:03:51,925 コールされます。 94 00:03:53,142 --> 00:03:54,906 OnCollision メッセージが送信されるためには 95 00:03:54,906 --> 00:03:57,461 衝突する二つのオブジェクトの一つに 96 00:03:57,461 --> 00:04:00,016 Rigidbody コンポーネントがアタッチされている必要があります。 (翻訳:gamesonytablet)