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

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

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

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

Q&A

解決済

1回答

765閲覧

ジャンプ処理に関して。

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

1グッド

1クリップ

投稿2020/01/22 18:23

編集2020/01/25 07:57

前提・実現したいこと

こちらの動画の(21:36辺り)で、ジャンプの処理に関して質問です。

ジャンプの処理を下記のようにしていますが、

velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);

根拠としているv=√2gh とは何でしょうか?
ご教示お願いします。

試したこと

こちらのサイトで、

【9】高さhから落下 ・mgh=(1/2)mv^2 ・v=√2gh

とあり、mgh=(1/2)mv^2の
式変形から、v=√2ghが求まることはわかったのですが、
mgh=(1/2)mv^2
は見覚えがあるんですが、忘れてしまい、この式はなんでしょうか?(質問1)
検索してみると、mghが位置エネルギーで、1/2mv^2が運動エネルギーみたいですが(合っていますか?)、
この=で結ばれているのは、運動量保存の法則ですか?
しかし、運動量保存の法則で検索すると、思っていたのものと違う式が多々ヒットするので、違うのかなとも思ってしまいました。

質問2。
また、v=√2ghは、hの高さを落下しきったときの速さでしょうか?
hの高さの落下途中のときはこの速さではないということですか?

質問3。
ジャンプ処理のコードは、ジャンプボタンを押した瞬間に、高さhから落下した(落下しきった(?))速度を、
上向きに瞬間的にかけていると思いますが、
ジャンプ上昇中も、

C#

1velocity.y += gravity * Time.deltaTime

が効くはずなので、実際は、jumpHeightの高さまではジャンプしないという認識で合っていますか?

質問を閉じた後の調査メモ。

力とエネルギーの関係

エネルギーは(力 × 距離)の次元を持っている。 ある物体に力Fがかかっている場の中で、 その物体を力に逆らう方向に、距離xだけ移動させると その物体はエネルギーFxを得る。

参考サイト:位置エネルギー(ポテンシャルエネルギー)

高さhの重力の位置エネルギーは、

重力の位置エネルギー = 力 × 距離 = 重力 × h

力は、F=maの運動方程式で表せる。(Fが力で、mが質量、aが加速度)。
重力の加速度(重力加速度)は、記号gで表わされるので、
高さhの重力の位置エネルギーは、

位置エネルギー = 重力 × h = F × h = mgh

高さhから落下しきったときの位置エネルギーと運動エネルギーの関係。
位置エネルギーは運動エネルギーに移り変わる。

mgh=(1/2)mv^2

上記の式を式変形して、重力で高さhから落下しきったときの速度、
つまり、重力で、高さh進んだ時の速度は下記。

v=√2gh

Unityでは、高さhから0まで落ちる間に掛かる外力(重力)と、高さ0からhまで上昇する間に掛かる外力は、等しい。
これより、高さ0からhまで上昇する間に掛かる外力で、高さh進んだ時の速度も、
重力の高さh進んだ時の速度と等しいので、
高さ0からhまで上昇する間に掛かる外力で高さh進んだ時の速度は、

v=√2gh

となる。

Bongo👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

・質問1の回答
自由落下運動の速度を求める公式です

・質問2の回答

v=√2ghは、hの高さを落下しきったときの速さでしょうか?

はい

hの高さの落下途中のときはこの速さではないということですか?

自由落下運動は加速し続けるので落下途中は違います。

・質問3の回答

jumpHeightの高さまではジャンプしないという認識

現実世界は空気抵抗があるので到達しませんがUnity空間では丁度jumpHeightの高さまでジャンプします。

velocity.y += gravity * Time.deltaTimeは重力を適用させているのでこれが無ければ落下もせず無限に上昇します。

投稿2020/01/23 03:47

編集2020/01/23 04:01
Hawn

総合スコア1222

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

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

退会済みユーザー

退会済みユーザー

2020/01/23 15:20

ご回答ありがとうございます。 質問1。 「=」で結ばれているので、何かしらの保存則の式も含まれませんか? 保存でよく調べ直したら、力学的エネルギー保存則が出てきたので、 v=√2ghが自由落下運動の速度を求める公式で、 mgh=(1/2)mv^2が力学的エネルギー保存則ということですか? 質問2。 ご回答ありがとうございます。理解できました。 質問3。 質問を立てる前に動作をUnityで確認したら、到達していないように見えてましたが、ご回答を受けて、オブジェクトの位置など間違っていたことに気づき確認したら、確かにjumpHeightの高さピッタリまでジャンプしていることが確認できました。 そうゆうものと覚えてしまえばいいだけかもしれませんが、なぜぴったりその高さまで飛ぶのだろうということに興味があるのですが、これは何か数式とかで示せたりすることってできますか? 何かの公式に当てはめると、ちょうど高さがjumpHeightの位置にくると求まるのでしょうか?
Hawn

2020/01/24 14:48 編集

>v=√2ghが自由落下運動の速度を求める公式で、 >mgh=(1/2)mv^2が力学的エネルギー保存則ということですか? 「この式はなんでしょうか?(質問1)」の質問がv=√2ghを指していると思っていたので「自由落下運動の速度を求める公式」の方だけ答えました。 その理解で問題ありません...が、 力学的エネルギー保存則は「力学的エネルギー = 位置エネルギー + 運動エネルギー」で覚えておいた方が良いです。 ちなみにmgh=(1/2)mv^2は基準面での式です。 >なぜぴったりその高さまで飛ぶのだろうということに興味 Unity的には高さhから0まで落ちる間に掛かる外力(重力)と高さ0からhまで上昇する間に掛かる外力が同等だからです。 物理的な理解は位置エネルギーと運動エネルギーの変換の説明を読むと良いのではないでしょうか。 >何かの公式に当てはめると、ちょうど高さがjumpHeightの位置にくると求まるのでしょうか? 正にこの公式がそれに当たります。 hを求めたければh=v^2/2gに左辺を入れ替えて使うと良いのではないでしょうか。 速度vを任意の値で代入すればhが求まるのでそれがjumpHeightです。 逆に速度を求めたい場合はhを任意の値で代入すれば「hの高さまで到達出来る速度v」を求める事が出来ます。 動画はこちらの使い方です。 この辺りの理解はネット上の資料や学校の授業で困難であれば私の文章でも難しいかなと思います。
退会済みユーザー

退会済みユーザー

2020/01/24 17:19

ご回答ありがとうございます。 一応、下記のように解釈してみました。 高さhから0まで落ちる間に掛かる外力(重力)による位置エネルギーUは、 U = mgh で、このh分の位置エネルギーを全て運動エネルギーに変換したのが、(1/2)mv^2 mgh = (1/2)mv^2 式変形すると、v=√2gh 高さhから0まで落ちる間に掛かる外力(重力)にかかった物体の速度は、v=√2gh 高さ0からhまで上昇する間に掛かる外力は、高さhから0まで落ちる間に掛かる外力(重力)と等しいので、その位置エネルギーは、mgh。 これより、高さ0からhまで上昇する間に掛かる外力にかかった物体の速度もv=√2gh ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問