どうも、ナッツパパです(^^)/
本記事では、Unity内で使用するCollisionクラスの中のプロパティである【relativeVelocity】について解説していきます。
▼ちなみに、Collisionクラスについては下の記事で詳しく書いています。
数分で読める内容なので、気軽に見てください(^^)
早速、見ていきましょう♪
【relativeVelocity】とは?
【relativeVelocity】は、ゲームオブジェクト同士が衝突した時に作成されるCollisionクラスに含まれるデータです。
ではどんなデータが入っているかというと、衝突した相手ゲームオブジェクトの相対速度が入っています。
相対速度なんて言われてもピンとこない方は、相手ゲームオブジェクトの衝突勢いのことだと思って下さい!
void OnCollisionEnter(Collision collision) { Debug.Log(collision.relativeVelocity); }
このコードで、衝突相手ゲームオブジェクトの相対速度(勢い)がConsoleウィンドウで見られます。
▼実際のConsoleウィンドウ
(地面に落下する球体の勢い。【relativeVelocity】は、地面ゲームオブジェクトのスクリプトファイルに書いてあります)
上画像の赤線のところを見て頂ければ、【relativeVelocity】の中身にどのようなデータが入っているかが分かると思います。
ちなみに、この()の中は、X軸・Y軸・Z軸の順番で値が並んでいます。
いわゆる、Vector3型のデータが入るようになっていますね。
球体の落下の勢いが、下(Y軸マイナス)に13.34となっています。
【relativeVelocity】について理解したところで、次は、具体的な使い方を見ていきましょう。
【relativeVelocity】の使い方
相手ゲームオブジェクトの衝突勢いを用いて、具体的に何が出来るでしょうか?
▼私が思いつく使い方を2つ挙げます。
・衝突勢いが基準値より大きければ、効果音をだす
使い方は、こんなところでしょうか。
そして、【relativeVelocity】には、Vector3型のデータが入っているわけですが、このデータのままでは、基準値と比較するのが難しいです。
例えば、衝突の勢いが『2』より大きければ、オブジェクトを削除する、というコードをif分で書きたい場合、Vector3型データのままでは、単純に比較が出来ません。
そこで、使われるのが【magnitude】です。
【magnitude】とは
【magnitude】とネットで検索すると、よくベクトルの長さを返すと表現されますが、初心者はそれを聞いてもあまりピンとこないんですよね。
ピンとくる方はいいのですが、よく分からないという方の為、具体的に解説していきます。
void OnCollisionEnter(Collision collision) { Debug.Log(collision.relativeVelocity.magnitude);
先ほどのコードの【relativeVelocity】の後に、【magnitude】を付け加えています。
▼上のコードの結果
【relativeVelocity】の中身を見た時と変わりましたね。
先ほどはVector3型データが入っていたのに対して、【magnitude】を付け加えるとシンプルな浮動小数点数(float型)になりました。
この値が、相手ゲームオブジェクトの衝突勢い(相対速度)を表してくれます。
ここでは、球体が地面に落下する勢い(Y軸方向マイナス値)を表しています。
これで、if文を用いた基準値との比較が出来るようになりました♪
ベクトルの長さを返すとは、こういうことです。
ちなみに【magnitude】は、Unity側が用意している【UnityEngine】オブジェクト内の【Vector3】クラスの中で定義されているプロパティ(変数)です。
【relativeVelocity】を用いた実際のコード
ここでは、衝突時の相手ゲームオブジェクトの勢いが基準値より大きければ、ゲームオブジェクトを削除するコードになります。
void OnCollisionEnter(Collision collision) { if(collision.relativeVelocity.magnitude > 2) { Destroy(gameObject); } }
ごくごくシンプルなコードを紹介してみました(^^)
参考資料
最後に参考資料を貼っておきます。
▼【relativeVelocity】について
▼【magnitude】について
▼【Vector3】クラス
本記事は、上記資料などを参考に、私なりに分かりやすく要約し、Unity学習中の皆様方に向けて作成した記事となります。
参考になれば幸いです(^^)