滑り落ちるオブジェクトを、抗力をつかって静止できるように制御してみましょう。
物理マテリアルで、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に戻り、斜面を滑り落ちます。