RigitBodyは個人的によく使うコンポーネント。
このコンポーネントは簡単に重力を再現できるので3D処理が得意なUnityとは相性がいいです。
ではいったいこれをどう使えばいいのかご紹介します。
使い方
RigitBodyを取得するにはまずGetComponentをすることから始まります。
動かしたいオブジェクトならそのままStart関数から指定をしましょう。
それ以外ならSerializeFieldやpublicでコンポーネントを取得しましょう。
準備が出来ましたら
1.velocityの解説
velocityとはRigitBodyを使いながらも移動させる方法。
よく移動やジャンプなどで利用するので使用頻度は高めです。
TransForm移動ではないので壁の中にいるという可能性が限りなくゼロに近づけることができます。
ですが早すぎたら突き抜けてしまうので作成しているゲームを調整するなりして防ぐ必要があります。
2.addforceの解説
addforceというのはRigitBodyで使う一種。
よくジャンプやノックバックなどで出番があります。
一瞬で力を入れるForceImpactと継続的に力を入れるForceの二種類を使えるようになります。
どっちを使えばいいのかと言うとゲームによるとしかいいようがありません。
例を挙げるならキャラをジャンプさせたいならそのまま強さを決めればいいだけですし、移動なら徐々に力を入れるのか突発的に力を入れるのかで決めればいいと思います。
サンプルコード:
public RigitBody rb;
void Start()
{
rb.addforce(new Vectot3(0,50,0,ForceMode.Force);
}
3.コンポーネントの中身の解説
Mass:物体の重量
Drag:空気抵抗(0で抵抗力無し)
Angular Drag:回転に関する抵抗力
Use Gravity:重力を使うかどうか
Is Kinematic:重力計算をやらなくなる
Interpolate:動きが悪い時に使う
- None:使用しない
- Interpolate:Noneよりも補完する
- Extrapolate:上の奴よりも補完する
下にいくほど重くなるので問題がなければデフォルトのままがいいです。
Collision Detection:オブジェクトのすり抜け防止
- Discrete:連続で衝突判定
- Continuous:上よりも頻度が高い
- Continuous Dynamic:高速の物体に使用
- Continuous Speculative:さらに早いものに使用
下に行くほど処理が重くなるので問題がなければデフォルトのままでいいです。
Constraints:物体の方向や回転の制限
- Freeze Position:向きの制限
- Freeze Rotation:回転の制限
基本的に回転のみ制限をかけるのがおすすめ。
でなければ動かすたびに回転してしまうのでゲームによって使うかどうか決めましょう。
まとめ
RigitBodyコンポーネントには簡単に重力を操れる設定ができるのでアクションゲームやシューティングゲームなどでよくお世話になります。
基本的にはデフォルトで十分なのですがより細かく指定したいならスクリプトから調整するので習得をがんばりましょう。