みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

摩擦(friction)

frictionは摩擦という意味で、UnityではPhysic Materialのfrictionの値を変更することで、Objectに摩擦を持たせることが可能です。

Physic Materialの作成

はじめに、Physic Materialを作成します。Physic MaterialのInspectorにFrictionという項目があるので、好みに変更します。

FrictionにはDynamic FrictionとStatic Frictionという2種類があり、それぞれ以下の意味のようです。

  • Dynamic Friction(動摩擦係数)

  • 物体が動いている時に用いられる摩擦係数

Static Friction(静止摩擦係数)

  • 物体が静止している時に用いられる摩擦係数

物理的には静止摩擦係数>動摩擦係数ですが、Unity上では見た目がよければ適当でいいかなとは思います。

これをGameObjectに追加します。

実験

Unityで、400個のブロックを落とした時の物理シュミレーションを作成してみました。左のブロックが摩擦係数1、右のブロックが摩擦係数0です。摩擦係数以外はすべて同じブロックですが、落下の仕方にかなり差が出ているのがわかります。

こちら 

ソースコード

import UnityEngine

class blocks (MonoBehaviour): 
    public prefab as Transform
    public offset as int
    
    def Start ():
        for i in range(10):
            for j in range(8):
                for k in range(5):
                    Instantiate(prefab, Vector3(i*3+offset,j*3,k*4), Quaternion.identity)
                    
    def Update ():
        pass