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

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

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

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

まとめ

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

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

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

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

おすすめのコンテンツ

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

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:4/20(土),4/27(土)
  • 時間:14:00〜17:35終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

sato

sato

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