2012年12月12日水曜日

必見!Unity初心者が学ぶ「Rigidbodyの正しい移動方法」

前回投稿に続いて「Rigidbodyの正しい移動方法」についてUnity Gemsより紹介する:

------
http://unitygems.com/mistakes1/
October 15, 2012

物理エンジンPhysicsは最大のツールであり、プログラミングせずに様々なことを再現できるが、正しく使用することが前提となる。


物理エンジンを使用する場合、KinematicでないRigidbodyを移動する場合はAddForceなどを使用すること。


自前のロジックでRigidbodyを移動する場合FixedUpdateのなかで記述する必要がある。その場合も不自然な動きが発生することがあり、例えば予想外に大きすぎる/小さすぎる力が他のオブジェクトに作用することがある。Input関数はFixedUpdateのなかで記述することは出来ない。ユーザ入力の取得が必要である場合、Updateのなかで入力取得を行いFixedUpdateのなかで物理計算を記載する必要がある。


GravityやTimescaleは変更しないのが鉄則。オブジェクトの動作が速すぎたり遅すぎたりという場合は大きさやカメラからの距離に問題あるケースが多く、重力の大きさ(gravity)を変更することにより効果を調整すると予想外のエラーが多発する。初心者であるならば重力の大きさを変更せず、大きさやバランスを正しくすべきである。


オブジェクトに現実的な大きさを用いること。Unityの1単位は必ず1メートルとすること。人は170センチぐらい、車は3メートル半ぐらい、など。大きさを正しく設定し、カメラを適切な距離に配置することで期待どおりの効果が得られる。挙動が怪しいと感じたときも現実世界の動きを観察し対比をしてみること。
ボールの落下が早すぎる場合、ビー玉と同じ大きさに設定したか確かめると良い。実際にビー玉を机の上で転がしてみると、予想外に動きが早いことをに気づくのでないだろうか?もっと流れる動きを期待する場合にはもっと大きなボールをより離れた距離にカメラを配置する必要があるのだ。
------

Unityを初めて使用したときに物理エンジンがすぐにリアルな動きを再現してくれたことに感動した記憶がある。自分の場合、その前まではAndroidで自前の物理動作を再現しようとして四苦八苦して、それでも不自然な動きに苦労したので、無料のエンジンが提供されていたことに本当に驚いたものだ。

それでも、最初にRigidbodyやIsKinematicの理解からスタートするのは誰もが同じだろう。英語としても聞きなれない用語なので、色々と試行錯誤するだけでなくUnityの関連サイトで調べて、実験することの繰り返しで身につけていく基本中の基本とおもう。

FixedUpdateに関する注意や、現実的な大きさを用いることも、最初のうちは、気付かなかったりする重要事項。

Unityの基本は自分で試行錯誤して肌感覚を身につけようぜ!


0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ