0:00:00.000,0:00:01.931 一般的なルールとして、もしゲームの中で 0:00:01.931,0:00:03.931 移動するゲームオブジェクトを使用する場合 0:00:03.931,0:00:05.058 Rigidbody オブジェクトとする 0:00:05.058,0:00:06.685 べきです。 0:00:07.185,0:00:09.185 Rigidbody は ゲームオブジェクトが物理挙動(Physics)により 0:00:09.185,0:00:11.365 影響を受けるためのコンポーネントです。 0:00:11.365,0:00:13.365 オブジェクトが重力により落下し、 0:00:13.365,0:00:15.809 重量(Mass)、抵抗(Drag)、速度(velocity) 0:00:15.809,0:00:17.406 などといった物理挙動のプロパティをもちます。 0:00:17.906,0:00:19.423 Rigidbody コンポーネントをゲームオブジェクトに 0:00:19.423,0:00:22.029 追加すると、そのオブジェクトを Rigidbody オブジェクトと 0:00:22.029,0:00:23.808 呼ぶことがよくあります。 0:00:24.128,0:00:26.183 Rigidbody コンポーネントはあらゆる物理挙動の伴う相互作用に 0:00:26.183,0:00:28.337 必要であり、ゲームオブジェクトは 0:00:28.337,0:00:30.337 コライダをアタッチしないと 0:00:30.337,0:00:33.059 他の物理挙動のあるオブジェクトと相互作用できません。 0:00:33.227,0:00:35.840 Rigidbody がないと powerCube 0:00:35.840,0:00:37.394 は宙に浮いたままです。 0:00:37.604,0:00:39.604 しかし、Rigidbody を追加したときに何が起きるかみてみます。 0:00:39.828,0:00:41.677 他のコンポーネントと同様に 0:00:41.677,0:00:43.277 インスペクタの最下部にある Add Component ボタンを使用するか 0:00:43.277,0:00:45.444 トップメニューの 0:00:45.444,0:00:46.941 Component メニューを使用します。 0:00:47.123,0:00:49.123 Physics セクションの配下でみつけることが出来ます。 0:00:51.129,0:00:53.129 これでゲームオブジェクトは重力により落下し、 0:00:53.129,0:00:55.129 物理エンジンおよび加えられた力により 0:00:55.129,0:00:57.129 制御されます。 0:00:57.449,0:00:59.449 Rigidbody にはさまざまなオプションがあります。 0:00:59.645,0:01:01.840 最初にゲームオブジェクトの Mass 0:01:01.840,0:01:04.312 Drag, Angular Drag が制御できます。 0:01:04.312,0:01:06.409 オブジェクトの Mass により 0:01:06.409,0:01:08.006 オブジェクトの衝突の処理方法に影響します。 0:01:08.299,0:01:10.299 Mass の大きいゲームオブジェクトほど 0:01:10.299,0:01:12.467 Mass の小さいゲームオブジェクトと衝突したときに 0:01:12.467,0:01:13.433 小さな作用をします。 0:01:13.671,0:01:15.574 ゲームオブジェクトの Drag は 0:01:15.574,0:01:17.200 他の作用がない場合にどれぐらい早く減速するかに 0:01:17.200,0:01:18.269 影響します。 0:01:18.507,0:01:20.410 空気抵抗と考えると良いです。 0:01:20.634,0:01:22.717 これは線形の速度の減少割合を決めるのに 0:01:22.717,0:01:24.213 使用されます。 0:01:24.492,0:01:26.629 同様にして、Angular Drag はゲームオブジェクトがいかに 0:01:26.629,0:01:28.379 Angular Velocity、すなわち 0:01:28.379,0:01:30.379 どれぐらい早く回転速度を減速するかにも 0:01:30.379,0:01:31.931 影響します。 0:01:32.196,0:01:34.154 例えば、もしオブジェクトにトルクを加えて 0:01:34.154,0:01:35.904 回転させる場合、 0:01:35.904,0:01:37.904 Angular Drag はこの力に抵抗を 0:01:37.904,0:01:40.110 作ります。次のオプションは 0:01:40.110,0:01:41.433 ゲームオブジェクトが重力(Gravity)により影響を受けるかどうか 0:01:41.433,0:01:43.071 です。 0:01:43.532,0:01:46.522 このチェックボックスを有効にすることにより重力を使用します。 0:01:47.602,0:01:49.608 重力の設定については 0:01:49.608,0:01:54.419 Unity の Edit - Project Settings - Physics メニューにてみることができます。 0:01:55.122,0:01:57.513 みてのとおり 3 次元のベクトルであり 0:01:57.513,0:01:59.126 デフォルトでは現実世界と同様 0:01:59.126,0:02:01.557 -9.81 という値です。 0:02:02.027,0:02:04.441 ここでグローバルにカスタマイズすることが出来るため 0:02:04.441,0:02:06.880 興味深いエフェクトを作ることが出来ます。 0:02:07.380,0:02:09.655 例えば横スクロールゲームでの弱い重力とか 0:02:09.655,0:02:11.655 パズルゲームの一部として 0:02:11.655,0:02:13.082 様々な軸として使用することさえ出来ます。 0:02:13.181,0:02:16.065 例えば、 Z 軸に 5 という値を 0:02:16.065,0:02:18.065 重力に加えてみましょう。 0:02:20.250,0:02:22.134 これで powerCubet はグローバル空間座標での Z 軸に 0:02:22.134,0:02:24.134 向かって引っ張られます。 0:02:25.905,0:02:28.417 Is Kinematic オプションにより 0:02:28.417,0:02:30.925 Rigidbody が物理挙動に対して反応するか決定します。 0:02:31.113,0:02:33.782 通常、シーンが開始するときすべての static な物体、 0:02:33.782,0:02:36.969 つまり、Rigidbody のないオブジェクトは 0:02:36.969,0:02:39.202 物理エンジンによりチェックされ 0:02:39.202,0:02:41.202 パフォーマンスのためそれ以降はチェックされません。 0:02:41.202,0:02:43.202 しかし、もし static オブジェクトを移動した場合 0:02:43.202,0:02:45.966 物理エンジンは再度すべての static オブジェクトを 0:02:45.966,0:02:48.383 正確性の観点で再チェックを行い、 0:02:48.621,0:02:50.621 これはパフォーマンスにとって負荷となります。 0:02:51.047,0:02:53.752 これを回避するため、 Kinematic Rigidiby オブジェクトを使用して 0:02:53.752,0:02:55.419 その Transform を通して 0:02:55.419,0:02:57.282 Translate 関数を使用して移動させることが出来ます。 0:02:57.546,0:02:59.546 これはつまり Physics オブジェクトについて 0:02:59.546,0:03:02.950 他にオブジェクトに影響するけれども自身には影響しないものを作成することが出来ます。 0:03:03.229,0:03:05.229 分かりやすい例は 0:03:05.229,0:03:08.018 Pong または Breakout といったスタイルのゲーム(※アルカノイドのような)でのパドルがあります。 0:03:08.753,0:03:11.778 このサンプルでは Rigidbody powerCube は 0:03:11.778,0:03:13.778 Use Gravity オプションがチェックされています。 0:03:14.154,0:03:17.420 Play ボタンを押下すると、オブジェクトは地面に落下します。 0:03:18.238,0:03:21.349 さらに丸い prop_samoflange Ball オブジェクトがあり、同様のコンポーネント設定を 0:03:21.349,0:03:23.349 となっています。 0:03:24.650,0:03:27.220 もし powerCube に重力がない場合 0:03:28.922,0:03:30.922 その下に落ちませんが、 0:03:30.922,0:03:32.783 他のオブジェクトにより影響されます。 0:03:33.242,0:03:35.061 もし他のオブジェクトにより影響されたくない場合 0:03:35.061,0:03:38.313 Is Kinematic を使用することができます。 0:03:42.142,0:03:44.543 前述のとおり オブジェクトはその Transform を通して 0:03:44.543,0:03:46.833 動かすことが出来ます。このシンプルなスクリプトを 0:03:46.833,0:03:49.274 使用して Tranlate 関数を使用して 0:03:49.274,0:03:51.801 毎フレームごとに 0:03:51.801,0:03:54.549 forward 方向に移動できます。 0:03:56.858,0:03:59.387 みてのとおり、オブジェクトは 0:03:59.387,0:04:02.084 他のオブジェクトと相互作用しますが 0:04:02.084,0:04:04.447 Rigidbody のままであるため、 0:04:04.447,0:04:06.280 物理エンジンに現在位置を伝えて 0:04:06.280,0:04:08.128 物理エンジンが 0:04:08.128,0:04:10.128 シーン全体を再評価しないようにします。 0:04:10.628,0:04:13.041 Interpolate および Extrapolate は 0:04:13.041,0:04:14.859 揺らぎ(Jitter)を回避します。 0:04:14.986,0:04:16.723 もしオブジェクトのわずかな動きが 0:04:16.723,0:04:19.221 Rigidbody により動かす時に発生する場合 0:04:19.221,0:04:21.451 Interpolate 設定を使用することで 0:04:21.451,0:04:23.827 前フレームにもとづいた Transform 動作のスムージングを 0:04:23.827,0:04:26.061 行ないます。そして Extrapolate 設定により 0:04:26.061,0:04:27.866 次フレームの位置予測にもとづいた 0:04:27.866,0:04:29.368 スムージングを行ないます。 0:04:29.368,0:04:31.094 次の設定は 0:04:31.094,0:04:33.527 衝突判定(Collision Detection)のタイプです。 0:04:33.527,0:04:35.527 Discrete, Continuous, および Continuous Dynamic があります。 0:04:36.085,0:04:38.002 デフォルトは Discrete であり、 0:04:38.002,0:04:40.542 問題ないかぎり Discrete を使用するべきです。 0:04:41.125,0:04:43.125 Continuous は高速のオブジェクトで 0:04:43.125,0:04:46.053 static な物体と相互作用がある場合に使用します。 0:04:46.318,0:04:48.944 Continous Dynamic は高速なオブジェクトで 0:04:48.944,0:04:50.820 他の Dynamic オブジェクトと相互作用がある場合に 0:04:50.820,0:04:52.388 使用します。 0:04:52.971,0:04:54.846 最後に Rigidbody コンポーネントの Constraints セクションにより 0:04:54.846,0:04:56.846 オブジェクトの動作または回転の 0:04:56.846,0:04:58.846 物理挙動を制限させることが 0:04:58.846,0:05:00.846 できます。例えば、 0:05:00.846,0:05:02.846 もしテトリスのようなゲームがあった場合 0:05:02.846,0:05:04.846 ゲームのブロックが落下するときに 0:05:04.846,0:05:07.168 回転させる必要があります。 0:05:07.168,0:05:09.502 ここの Rotation Constraints を使用することで制限すべきです。 0:05:10.193,0:05:12.635 このサンプルでは powerCube は 0:05:12.635,0:05:15.026 workbench 上に落下します。これは Rigidbody であり 0:05:15.026,0:05:17.026 Use Gravity が有効化されています。 0:05:17.995,0:05:19.995 標準どおり、次のように落下します。 0:05:20.302,0:05:23.130 もし落下するについれて回転させたくない場合 0:05:23.130,0:05:26.053 Constraints のなかで回転をフリーズすることが出来ます。 0:05:26.553,0:05:29.815 これで落ちるときに回転が発生しません。[br](翻訳:gamesonytablet)