質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

8727閲覧

ForceModeとForceMode2Dの違い

1129

総合スコア121

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2017/11/12 12:19

UnityのRigidbody/Rigidbody2D.addForce()
などのメソッドは、それぞれForceMode,ForceMode2Dを引数にとります。

FoeceMode2Dの変数:

Force その質量を使用して、Rigidbody2D に力を追加します。
Impulse その質量を使用して、rigidbody2D にインスタントフォースインパルスを追加します。

ForceModeの変数:
Force 質量を使用して、リジッドボディへ継続的な力を加えます。
Acceleration その質量を無視して、リジッドボディへ継続的な加速を追加します。
Impulse その質量を使用し、リジッドボディにインスタントフォースインパルスを追加します。
VelocityChange 質量を無視して、リジッドボディにインスタント速度変化を追加します。

となっていますが、なぜFoeceMode2Dの変数には
質量を無視して力を加えるオプションが無いのでしょうか?
また、Forceのような挙動を2Dでも実現したい場合にはどのようにすればいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

すみませんが、なぜForceMode2DにAccelerationやVelocityChangeが用意されていないのか、明確な理由はわかりませんでした。
もし2Dでやりたい場合は、モードはForceやImpulseとし、与えるべき力や力積を与えたい加速度や速度から自前で計算して渡してやるのがいいでしょう。
この計算は簡単で、単に加速度や速度にRigidbody2Dの質量を掛けてやればいいはずです。ニュートンの運動方程式を思い出していただけると分かりやすいのではないでしょうか?

[追記]
どうやらUnityの物理シミュレーションシステムは、3Dと2Dで異なるバックエンドを用いているようですね。
Why Choose 2D Colliders over 3D colliders in a 2D game? what is the benefit? downside? : Unity3Dの投稿によると、

The first thing to understand is that the 2D and 3D physics systems are completely separate physics engines. The 3D system uses PhysX, while 2D uses Box2D. Both engine's are exposed to a Unity user with a nearly identical API, so you might not even realize this.

まず理解するべきは、2Dと3Dの物理システムは完全に異なった物理エンジンであることです。3DシステムはPhysXを用いており、一方2DはBox2Dです。両エンジンはUnityユーザに対してほぼ同じAPIにて提示されているので、このことには気付きさえしないかもしれません。

とのことで、実際に両者のドキュメントを見てみると、PhysXは力のモードにAccelerationやVelocityChangeに相当するっぽいものがありますが、Box2Dのb2Bodyにはぴったり対応しそうなものはないように見えます。
この辺の事情が関係しているのかもしれません。

投稿2017/11/13 04:00

編集2017/11/13 09:41
Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1129

2017/11/13 11:35

まさかUnity 3Dと2Dは違うバックエンドで動いていたとは... このような事情があっての仕様なのですね。Unityの手抜きだと思ってました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問