オブジェクトが落下していくスピードをランダムにする仕組みをつくってみましょう。
クリックのたびに、リジッドボディの抵抗(Drag)を取得して、その数値を乱数にするスクリプトを作成します。
dragを変えれば空気抵抗が変化し、重力で落ちる速度に違いをつけることができます。
関連記事:
抵抗(Drag)にアクセスして落下スピードを抑える
1秒おきに座標をランダムにして落下
指定の座標まで落下すればPrefabを削除
キーを押していれば浮上、離せば落下
落としたボールを1秒後に補充
重力で落ちる速さに違いをつける
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除します。
空のオブジェクトを作成。
BallDrop.csを作成し、GameObject(空のオブジェクト)に追加します。
BallDrop.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDrop : MonoBehaviour { private Rigidbody rb; [SerializeField] GameObject ball; void Update() { if (Input.GetMouseButtonDown (0)) { rb = ball.GetComponent<Rigidbody>(); rb.drag = Random.Range(0,5); Instantiate(ball, new Vector3(0, 5, 0), Quaternion.identity); } } } |
Ballのフィールドに、Sphereを追加します。
ゲームプレイして、画面をクリックしましょう。
クリックで生成されるSphereに対して、抵抗の値がランダムで与えられ、落下スピードに違いをだすことができます。
関連記事:
抵抗(Drag)にアクセスして落下スピードを抑える
1秒おきに座標をランダムにして落下
指定の座標まで落下すればPrefabを削除
キーを押していれば浮上、離せば落下
落としたボールを1秒後に補充