見出し画像

[Unity]オブジェクトの落下速度が遅い問題

Blenderで作成したモデルをUnityに入れた際、ゆっくり落ちる問題(落下してることにすらしばらく気づきませんでした、、)に遭遇しました。
今回は、原因箇所と対策について記録します。

オブジェクトを操作する際、以下のように書いてる部分が原因でした。

-----
(省略)
public float speed;
private Rigidbody rigd;
(省略)
void Fixed Update(){
x = Input.GetAxisRaw("Horizontal");
z = Input.GetAxisRaw("Vertical");
rigd.velocity = new Vector3(x * speed, 0, z * speed);
rigd.velocity = new Vector3(x * speed, rigd.velocity.y, z * speed);
(省略)
-----

太字部分を次のように修正しました。
rigd.velocity = new Vector3(x * speed, -9.81f, z * speed);
rigd.velocity = new Vector3(x * speed, rigd.velocity.y, z * speed);

一応これでちゃんと(?)落下しているように見えました。

速度に重力加速度を入れているので、落下時間が長くなるほど速くなるという厳密な自由落下ではないと思います。

考察を残しますと,
オブジェクトの速度が毎回初期化されてそうだなー。
移動の際、速度を変えるのではなく、加速度を加える方がいいのかなー。
少なくともY軸だけは加速度を利用して制御するとか?
って感じです。

実際に作って、学んでいくのはやっぱり楽しいですね。

とりあえず、これで開発を進めていきます。(ジャンプアクションを入れると、不具合が出そうですが、、)

※ 投稿後、もう少し考えたら、普通に速さを維持したらいいんじゃね?と思い立ち、マシな直しをしたので、修正してます。


いいなと思ったら応援しよう!