【Unity入門】Rigidbodyで自在に移動!velocityの活用方法!

regidbodyを利用した移動時にどんな方法を使っていますか?

その一つにあげられるのが、velocityを利用した移動方法だと思います。

しかしvelocityを移動に使うことは基本的に推奨されていません。

今回はその辺りに触れてvelocityとは一体何なのかを見つつ、では実際どんな時にvelocityを使うのかまで見てきましょう。

[基本] まずvelocityとは?
[基本] 使うとどんな動きをするの?
[応用] 現在の速度表示に使える!
[応用] 最高速度の制限に!
[応用] FPSゲームのジャンプにもよく使われる!

では今回もよろしくお願いいたします。

まずvelocityとは?

velocityを一言で言うと「速度ベクトル」です。

Vector3型で「現在の速度ベクトル」を保持してくれています。

(Vector3に詳しくない人はこちらの記事を確認しておきましょう!)

【Unity】Vector3を完全攻略!加算・比較もできるって知ってた?
更新日 : 2018年12月19日

もちろん上書きすれば、現在の速度ベクトルを変更することもできます。

それを利用して、移動に使うことも出来るわけですね!

とはいえ先ほども説明したように、velocityを利用した移動はあまり推奨されていません。

公式リファレンスにもvelocityの項目に、以下のように記載があります。

「ほとんどの場合、非現実的な挙動になるため速度を直接修正するべきではありません。」

これは「質量や重力などを考慮せずに、突然速度が変化する」なんて状況は物理演算をする上で不自然な挙動につながるからです。

同じ力を与えても、軽いものは素早く加速し、重い物ゆっくり加速していくべきですよね!

質量などを考慮して、移動を行いたい場合は、velocityではなくAddForceなどを利用すると良いでしょう。

AddForceについて学びたい場合はこちらの記事をご覧ください。

【Unity入門】Rigidbodyで自在に移動!addforceやpositionを極めよう!
更新日 : 2018年12月24日

使うとどんな動きをするの?

AddForceを利用した移動を行うと、質量などを考慮した移動ができます。

velocityを利用した移動を行うと、物理演算を考慮せず速度を無理やり書き換えることとなります。

せっかくなので、実際にAddForcevelocityでの移動を比較してみてみましょう。

AddForceを利用した移動
addforce

velocityを利用した移動
vel

AddForceの質量感のある動きにくらべ、velocityの加速は質量が感じられないと思います。

もちろん作る作品の上で、違和感がないのなら使用しても問題ありません。

例えばゲームを作る際、演出上オブジェクトを現実離れした挙動をさせることなんて多々ありますしね!

良い作品を作るためには、絶対に物理演算を守る必要はなく、面白く見せることが大事です。

とは物理演算をつかうのなら、基本的には質量などを考慮したAddForceを使用した動きをさせることが好ましいのも事実です。

AddForceとvelocityどちらで動かすべきか悩んでいる人は、AddForceもきっちり勉強してその上で選んでいきましょう。

現在の速度表示に使える!

velocityは、Vector3型で速度ベクトルを保持しているのは先ほど説明しました。

つまりVector3のmagnitude関数を使用すれば、ベクトルの力(速度)が取得できます。

magnitude関数は、ベクトルの長さを取得出来る関数なんです。

以下は速度を取得して、ログに表示する例です。

今回はログに速度を表示しているだけですが、Textなどで表示すれば例えばレースゲームなどでは利用価値があるでしょう。

Textについて知りたい人はこちらの記事をご覧ください!

【Unity入門】1分でTextを表示しよう!スコアの表示まで簡単解説!
更新日 : 2018年12月24日

最高速度の制限に!

速度が取れるということは、速度制限をつけることが可能ですね!

上記は単純な速度制限設定ですが、一定の速度が出たら、力を加えないようにしています。

速度が取れれば、こういった速度での判定も行えますね!

FPSゲームのジャンプにもよく使われる!

こちらは公式のリファレンスに乗っている使用例です。

ジャンプボタンが押された際に速度を加えています。

たしかにFPSのジャンプは、膝を曲げてジャンプする真面目な物理演算というよりは、ポーンと軽く飛ぶようなそんな挙動な気もします。(もちろん作品にもよりますが…)

基本的に推奨していないとはいえど、あまり気にせず、違和感がないのなら有効活用していきましょう。

何事も、絶対こうしなければならないというルールはありません。

物を作る上では、面白くユーザーにストレスを与えない挙動が最優先です。

まとめ

いかがでしたでしょうか。

この辺りが物理演算を使った基本的な動きとなります。

とはいえ、これ以外にも力の加え方は多数存在します。

実現したいことが増えてきたら、また新しく学んでみましょう。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説