本日は Unity の小ネタ枠です。
Unityでオブジェクトの摩擦や跳ね返りの大きさを設定する方法について記事にします。
物理特性マテリアル
オブジェクトの摩擦や跳ね返りの大きさを設定するには物理特性マテリアル(PhysicMaterial)の設定を行います。
docs.unity3d.com
物理特性マテリアルの設定では以下のような設定が可能です。
・移動している物体の摩擦係数
・静止している物体の摩擦係数
・物体の弾性(跳ね返りの大きさ)
・異なる2つのオブジェクトが衝突したときの摩擦
・異なる2つのオブジェクトが衝突したときの弾性
サンプルシーン
以下のようなサンプルシーンを用意しました。
Sphere オブジェクトを Plane オブジェクトに自由落下させて弾性の大きさを変化させてみます。
デフォルトではオブジェクトに物理特性マテリアルは設定されていません。
このとき、シーンを再生してオブジェクトが他のオブジェクトと衝突しても跳ね返りません。
物理特性マテリアルの設定方法
Assets フォルダで右クリックから[Create -> Physic Material]を選択して物理特性マテリアルを作成します。
生成された物理特性マテリアルを選択して Inspector ビューから特性を設定します。
弾性は[Bounciness]で設定します。デフォルト値は 0 です。このとき弾性はなく、全く跳ねない物理特性になります。
[Bounciness]を 1 に設定してみます。1 の場合はエネルギーが減少することなく跳ねます。
実際に物理特性マテリアルを反映して動作を試してみます。
物理特性マテリアルを対象オブジェクトの Collider コンポーネントの[Material]に設定してみます。
これで対象のオブジェクトに物理特性を設定できました。
シーンを再生すると、オブジェクトがオブジェクトと衝突したときに跳ねるようになりました。