【3Dゲームエンジン】Unity質問スレッド32 at GAMEDEV【3Dゲームエンジン】Unity質問スレッド32 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト1046:名前は開発中のものです。 17/12/21 20:52:09.10 m2pWnfBj.net 例えば、物理演算を使用する場合、Unityで設定できるのは、 速度velocityと力AddForce、角速度angularVelocityとトルクTorqueだけです。 (位置positionや角変位rotationは原則いじらないほうが良いです) すると、直線移動や自転だけなら設定が簡単ですが、 公転のような円運動を行うには、物理法則に準じた命令を与える必要があります。 物理演算では、transform.RotateAroundを使えないので、 そういう場合に自分で工夫して実装できるかどうかに関わってくると思います。 1047:名前は開発中のものです。 17/12/22 00:21:49.04 ko83+b2p.net 一番とっつきにくいのは回転運動だと思います。 Rigidbodyでは、ForceMode.Accelerationがあるので、 加速度Vector3 a(m/s/s)を得たい場合は、 AddForce(a, ForceMode.Acceleration)とするだけ、 角加速度Vector3 aa(rad/s/s)を得たい場合は、 AddTorque(aa, ForceMode.Acceleration)とするだけですが、 Rigidbody2Dでは、ForceMode.Accelerationがないので、 加速度Vector2 a(m/s/s)を得たい場合は、 AddForce(a * mass)としたり、 角加速度float aa(度/s/s)を得たい場合は、 AddTorque(aa * inertia * Mathf.Deg2Rad)とする必要があります。 要するに、ニュートンの運動方程式や、 オイラーの回転運動方程式を使う必要が出てきます。 速度は、2DはVector2 v(m/s)、3DはVector3 v(m/s)で分かりやすいですが、 角速度は、2Dはfloat w(度/s)、3DはVector3 w(rad/s)と単位が変わります。 Torqueではrad単位で入れないと、inertiaと乗算できないので面倒です。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch