------
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 件のコメント:
コメントを投稿