今回は、初めてunityの記事を書いていこうと思います。
ということで今回は、私が知ってはいるけど理解があいまいなところの、RigidbodyとColliderのComponentの違いについてまとめていこうと思います。ざっくり知ってはいるけど、意外と知らなかったり、ちょっと為になればうれしいです。
unity初めたばっかりという人を対象に書いていくのでお手柔らかにお願いします(笑)
今回は、それぞれの機能についてまとめていきます。
Rigidbody、リジットボディ・・・
オブジェクトに物理挙動を可能にする。つまり、Rigidbody Componentをオブジェクトに追加することで、unity内で、物体として扱えるようになります。
例えば重力を受けるようになり、Colliderを追加することで別のオブジェクトに当たった時に力を受けたり与えたりします。
Rigidbodyを追加すると、対象のオブジェクトの物理挙動は、Rigidbody Componentにより計算されます。言い換えれば、Rigidbodyが追加されているオブジェクトを、スクリプトを使って、位置(Position)、回転(Rotation)などのTransformプロパティを変更することは良くありません。なめらかな動きにならず、瞬間移動したりしてしまいます。
じゃあどうすればいいのってなるかもしれません。。。
答えはRigidbodyの特性を理解していれば簡単にわかります。
Rigidbodyが追加されたオブジェクトを動かすには、Addforceメソッドを使うことで可能となります。Addforceとは、直訳すると「力を加える」という意味です。Rigidbodyが物理演算してることを考えれば、理解しやすいと思います。
位置(Position)、回転(Rotation)を直接変えると(Transformを使うと)、計算中にいきなり座標が切り替わるため、ワープしてしまいます。
Addforceを使うと、オブジェクトに力を加えるため、計算中の数値に力の分の計算が加わり、オブジェクトが移動するようになります。
Collider、コライダー・・・
物理衝突を判定するオブジェクトの形状を定義します。Colliderを追加することで、オブジェクト同士の衝突が可能になります。Colliderには、丸や四角などの単純な形のものや、オブジェクトのメッシュに合わせた複雑な形のものがあります。また、簡単な形のコライダーを組み合わせて結合することもできます。例えば手足に別々のColliderを付けたりできる感じです。
単純な形状のものほど、データを速く処理できるそうなので、積極的に使っていきたいですね。
単純な形状のColliderは、3Dでは、
Box Collider
Sphere Collider
Capsule Collider
の3つがあります。2Dでは、
Box Collider
2D Circle Collider
の2つがあります。
キャラクターなどの複雑な形状のオブジェクトには、メッシュに合わせてColliderを付けれますが、上の単純なColliderを組み合わせることもできます。
つまりは要工夫ですね、、、
Colliderは、物理衝突を判定します。つまりオブジェクトが衝突したかどうかだけを判定するのです。Colliderだけでは、オブジェクト同士が衝突しても、反発せずに、互いをすり抜けてしまいます。
ゲーム内では、衝突したら跳ね返ったり、反発してほしい場面もありますよね。
反発するようにするためには、Rigidbodyを追加する必要があります。
RigidbodyとColliderの性質を理解していただけたと思います。
まとめ
Rigidbodyは、
物理挙動を付加する。
Colliderは、
衝突判定を可能にする。
最後まで読んでいただき、ありがとうございました。