Clusterワールドで、クラブで打ったボールはコロコロと転がり続け全然止まらないず、床から落ちてしまう。この記事ではこの問題を解決するため、Unity上で2つのスクリプトを使用した。途中失敗もあったが、最終的にはGameビューでボールの停止を確認できた。
はじめに
以前の検討で、UnityスクリプトのPhysic Material(摩擦)とRigidbodyのAngular Drag(抵抗)でボールが止まることが分かった。今回は、これを使って、ボールが止まるワールドをUnityで作成する。
ワールドの準備
Unity Hubクリック→ClusterCreatorKitTemplate-masterクリックで、クラブとボールのワールドを開く(この時点では、摩擦・抵抗系は何も設定していない状態)。
![](https://nahbun50.com/wp-content/uploads/2023/05/795316b92fc766b0181f6fef074f03fa-2-800x348.png)
摩擦のマテリアルを作成し、床・ボール・クラブに設定
はじめに摩擦を設定する。
摩擦マテリアル作成
ProjectビューのAssetsフォルダ内にポインタを置いた状態で、右クリック。
メニューから「Create」→「Physic Material」クリック。
![](https://nahbun50.com/wp-content/uploads/2023/05/2b530e80c7d0de90885e285c5d798063-2-800x361.png)
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のまま使用する。
![](https://nahbun50.com/wp-content/uploads/2023/05/c8856789ec11ab8b1013037cef6929f9-2-800x354.png)
まずQuad(床)に摩擦を設定する。
Hierarchyビューで“Quad”選択。
InspectorビューのMesh Collider内にある“Material”のボックス内に、Assetsフォルダ内の“New Physic M”マテリアルを、ドラッグ&ドロップ。
![](https://nahbun50.com/wp-content/uploads/2023/05/3a4f695a458cb0ac0aceaa2eb13ac2dd-2-800x408.png)
Mesh ColliderのMaterialに“New Physic M”マテリアルが指定された。
これで床に摩擦マテリアルが設定された。
![](https://nahbun50.com/wp-content/uploads/2023/05/f96d9b4281f6d16b3c7589aed5a17be5-3-500x236.png)
続いてSphere(ボール)に摩擦を設定(これが本当に必要かどうかは不明、理由は後述)。
Hierarchyビューで“Sphere”選択。
InspectorビューのSphere Collider内にある“Material”の指定ボックス内に、Assetsフォルダ内の“New Physic M”マテリアルをドラッグ&ドロップして、Materialに指定する。
![](https://nahbun50.com/wp-content/uploads/2023/05/94ed160662be198949535a112047e9b4-2-800x352.png)
次いでクラブのフェイス部にも摩擦を設定(フェイス部をボールが上滑りするため)。
Hierarchyビューで“club”の“face collider”選択。Inspectorビューで、Box Colliderの“Material”ボックス内に、同じマテリアルをドラッグ&ドロップして指定する。
![](https://nahbun50.com/wp-content/uploads/2023/05/f4a1b0aed5dc02442c433030ff24c031-3-800x455.png)
再生するも・・・止まらず、失敗
再生して確認
ここで[▶]クリックしてGameビュー開始。
クラブを握る。
![](https://nahbun50.com/wp-content/uploads/2023/05/8aa09ea6d7822fbb10331635d428d488-2-800x172.png)
そして、失敗
ボールをコツンと打つと、ボールは転がって・・・止まらず・・・落ちた。
まぁこれは以前の検証で分かっていた。
[▶]クリックで停止して、Sceneビューに戻る。
![](https://nahbun50.com/wp-content/uploads/2023/05/f36fc0458607842cbf0775516687491b-2-500x322.png)
失敗(ボールが止まらない)の原因
球と床の接触は点であるために、摩擦は働かない・・・。
だからこの状態では、ボールは止まらない。
ボールを停止させるためには、ボールに抵抗を与える設定が必要である。
これが、Rigidbodyの中のDragとAngular Drag。
解決法:ボールに抵抗を設定する
Hierarchyビューで“ボールのオブジェクトSphere”選択。
![](https://nahbun50.com/wp-content/uploads/2023/05/e99cc3808964d9e08ec8fb27d43842de-3-500x269.png)
Inspectorビューの表示は、図の通り。
抵抗の設定
ボールに働く抵抗の設定は、“Rigidbody”の中の、“Drag”と“Angular Drag”で行う。
・Drag:球にかかる空気抵抗(球自体の止まりやすさ)
・Angular Drag:球の回転に対する抵抗(球の回転の止まりやすさ)
![](https://nahbun50.com/wp-content/uploads/2023/05/b1db37a1df6c6332fc8bdf704e9d1e49-2-800x391.png)
今回は、球の回転の抵抗を上げて(回転しづらくして)、球を停止させる。
Angular Dragを“10”として、[▶]再生。
![](https://nahbun50.com/wp-content/uploads/2023/05/1249f2682be7181f6a6266c99ee5cae6-1-500x146.png)
ボールをコツン・ピタ。すぐ止まった。むしろ全然転がらない!
![](https://nahbun50.com/wp-content/uploads/2023/05/ad328257df3c27d0237be29c2f1fd87c-1-500x147.png)
では・・と“5”に変更して[▶]再生。
![](https://nahbun50.com/wp-content/uploads/2023/05/90b0dfa136419ccc91fda6fec27764ca-2-500x148.png)
これでも全然転がらない。
![](https://nahbun50.com/wp-content/uploads/2023/05/571a82aa9fa95e9dd03f724dc3a94890-1-800x158.png)
Angular Drag“2”に変更して[▶]再生。
![](https://nahbun50.com/wp-content/uploads/2023/05/1229c317e01c766a53c2709efe066b18-1-500x148.png)
コツン・コロコロ・・ピタ。
少し転がって止まった。こんなものなのかな。
Angular Drag“1”位がちょうど良いかも。
![](https://nahbun50.com/wp-content/uploads/2023/05/085f435ecdb57e7076774ccbc381f72e-1-500x291.png)
クラブで打ったボールが、転がった後にちゃんと停止するワールドができた。
一度保存。
上部メニューから「File」→「Save」クリック。
![](https://nahbun50.com/wp-content/uploads/2023/05/88ed93005e0cb97394dcb2f41037a9e6-1-500x210.png)
実際は、摩擦(Physic Material)を設定しなくても、ボールを止められるのかもしれないが、一応完成。
次は、実際にMetaQuest2上で確認する。
参考書籍