滑り落ちるオブジェクトを、抗力をつかって静止できるように制御してみましょう。
物理マテリアルで、Cubeが斜面をすべります。
スペースキーを押せば、抗力が上昇し、ストップが効くようになります。

オブジェクトの準備
Cubeオブジェクトを作成し、名前をFloorに変更。
サイズを変更します。

もう一つCubeを作成し、座標を変更しましょう。

Cubeにリジッドボディを追加します。

CubeをFloorの中にドラッグ&ドロップして、親子関係を取ります。

Floorを選択し、Zを30度傾けます。

Cubeをドラッグ&ドロップして、親子関係を外します。

ゲームビューではこのように表示されています。

物理マテリアル
続いて、Cubeに物理マテリアルをつけ、滑り落ちるように設定します。
プロジェクトビュー内で右クリック > 作成 > 物理マテリアル

NewPhysicMaterialを、Cubeに追加します。

DynamicFriction と StaticFriction、そしてFrictionCombineの設定を変更します。

ゲームプレイしてみましょう。
物理が有効になり、Cubeが斜面を滑り落ちていきます。
抗力を取得してキー操作で制御
次は、滑っていくCubeを止める仕組みです。
DragStop.csを作成し、Cubeに追加しましょう。

DragStop.csを記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DragStop : MonoBehaviour { public Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if (Input.GetKey(KeyCode.Space)) { rb.drag = 20; } if (Input.GetKeyUp(KeyCode.Space)) { rb.drag = 0.2f; } } } |
ゲームプレイしてみましょう。
スペースキーを長押している間は、抗力20がはたらいてCubeが静止。
キーを離せば、再び抗力が0.2に戻り、斜面を滑り落ちます。
