ボールに摩擦と抵抗を設定して地面で止まるClusterワールドをUnityで作る失敗例と解決法

Clusterワールドで、クラブで打ったボールはコロコロと転がり続け全然止まらないず、床から落ちてしまう。この記事ではこの問題を解決するため、Unity上で2つのスクリプトを使用した。途中失敗もあったが、最終的にはGameビューでボールの停止を確認できた。 

はじめに
以前の検討で、UnityスクリプトのPhysic Material(摩擦)とRigidbodyのAngular Drag(抵抗)でボールが止まることが分かった。今回は、これを使って、ボールが止まるワールドをUnityで作成する。

ワールドの準備
Unity Hubクリック→ClusterCreatorKitTemplate-masterクリックで、クラブとボールのワールドを開く(この時点では、摩擦・抵抗系は何も設定していない状態)。

摩擦のマテリアルを作成し、床・ボール・クラブに設定

はじめに摩擦を設定する。

摩擦マテリアル作成
ProjectビューのAssetsフォルダ内にポインタを置いた状態で、右クリック
メニューから「Create」→「Physic Material」クリック。

Assetsフォルダ内に新規Physic Material(名称“New Physic M”)が作成され、Inspectorビューにはマテリアルの詳細が表示される。

以下、各設定値の説明
Dynamic Friction;動いている状態での摩擦(0-1)
Static Friction:静止している状態での摩擦(0-1)
Friction Combine:2つの物体が接触している時の摩擦力の決定方式
   (Bounciness、Bounce Combineは反発系の設定なので今回はスルー)
今回はそれぞれ、デフォルト値の0.6、0.6、Averageのまま使用する。

まずQuad(床)に摩擦を設定する。
Hierarchyビューで“Quad”選択
InspectorビューのMesh Collider内にある“Material”のボックス内に、Assetsフォルダ内の“New Physic M”マテリアルを、ドラッグ&ドロップ

Mesh ColliderのMaterialに“New Physic M”マテリアルが指定された。
これで床に摩擦マテリアルが設定された。

続いてSphere(ボール)に摩擦を設定(これが本当に必要かどうかは不明、理由は後述)。
Hierarchyビューで“Sphere”選択。
InspectorビューのSphere Collider内にある“Material”の指定ボックス内に、Assetsフォルダ内の“New Physic M”マテリアルをドラッグ&ドロップして、Materialに指定する。

次いでクラブのフェイス部にも摩擦を設定(フェイス部をボールが上滑りするため)。
Hierarchyビューで“club”の“face collider”選択。Inspectorビューで、Box Colliderの“Material”ボックス内に、同じマテリアルをドラッグ&ドロップして指定する。

再生するも・・・止まらず、失敗

再生して確認
ここで[▶]クリックしてGameビュー開始。
クラブを握る。

そして、失敗
ボールをコツンと打つと、ボールは転がって・・・止まらず・・・落ちた。
まぁこれは以前の検証で分かっていた。
[▶]クリックで停止して、Sceneビューに戻る。

失敗(ボールが止まらない)の原因
球と床の接触は点であるために、摩擦は働かない・・・。
だからこの状態では、ボールは止まらない。
ボールを停止させるためには、ボールに抵抗を与える設定が必要である。
これが、Rigidbodyの中のDragとAngular Drag

解決法:ボールに抵抗を設定する

Hierarchyビューで“ボールのオブジェクトSphere”選択。

Inspectorビューの表示は、図の通り。

抵抗の設定
ボールに働く抵抗の設定は、“Rigidbody”の中の、“Drag”と“Angular Drag”で行う。
Drag:球にかかる空気抵抗(球自体の止まりやすさ)
Angular Drag:球の回転に対する抵抗(球の回転の止まりやすさ)

今回は、球の回転の抵抗を上げて(回転しづらくして)、球を停止させる。
Angular Dragを“10”として、[▶]再生。

ボールをコツン・ピタ。すぐ止まった。むしろ全然転がらない!

では・・と“5”に変更して[▶]再生。

これでも全然転がらない。

Angular Drag“2”に変更して[▶]再生。

コツン・コロコロ・・ピタ。
少し転がって止まった。こんなものなのかな。
Angular Drag“1”位がちょうど良いかも。

クラブで打ったボールが、転がった後にちゃんと停止するワールドができた。
一度保存。
上部メニューから「File」→「Save」クリック。

実際は、摩擦(Physic Material)を設定しなくても、ボールを止められるのかもしれないが、一応完成。
次は、実際にMetaQuest2上で確認する。

参考書籍

タイトルとURLをコピーしました