重力や衝突の際の動きなど、現実世界のように細かい動きを再現してくれる「Rigidbody」。
その中のオプションに「Kinematic」というものがあります。
時間差でこのKinematicを切り替えたいと思いスクリプトを作成しました。
そもそもKinematicとは何か
Is Kinematic = 物理的な挙動をするかどうか、の設定です。
チェックを入れると重力等の物理的挙動を無効化することができます。
デフォルトではチェックは入っていません。
スクリプト
コピペでそのまま使えます。
対象のオブジェクトにコンポーネントを追加すれば、10秒後にrb.isKinematic = true; が走るようになっています。
オブジェクト設置後は重力有効
落下が終了したら位置を固定したい
というような時に有効です。
using UnityEngine;
public class KinematicSwitcher : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
// Rigidbodyコンポーネントを取得
rb = GetComponent<Rigidbody>();
// 10秒後にKinematicをtrueにするメソッドを呼び出す
Invoke("EnableKinematic", 10f);
}
void EnableKinematic()
{
// Rigidbodyのkinematicプロパティをtrueに設定
rb.isKinematic = true;
}
}
header.all-comments