あるオブジェクトの下に入れば、障害物として落下する仕組みをつくってみましょう。
3つのSphereの下を移動し、真下付近を通れば、落ちてきます。
関連記事:
一定距離から外れたら実行する
他のオブジェクトに接近すれば繋がる
Fixed Jointを解除してオブジェクトを落とす
特定エリアに近づくと追いかけてくる
指定の座標まで落下すればPrefabを削除
範囲に入れば落下させる
平面、Cube、Sphereを作成します。
Cubeの位置を変更します。
Sphereの位置を変更し、リジッドボディを追加。
重力を使用のチェックを外しておきましょう。
SphereDrop.csを作成し、Sphereに追加します。
SphereDrop.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereDrop : MonoBehaviour { public GameObject target; void Update() { Vector3 cube = target.transform.position; float dis = Vector3.Distance(cube,this.transform.position); if(dis < 4.6f){ SphereGravity(); } } void SphereGravity() { GetComponent<Rigidbody>().useGravity = true; } } |
ターゲットというフィールドが出来ますので、ここにCubeを入れましょう。
Sphereをあと2つ複製して、位置を変更します。
それぞれのオブジェクトに色を付けましょう。
ゲームビューでの見た目は、このようになっています。
プレーヤーを動かす
次に、プレーヤーを動かせるように、スクリプトを作ります。
CubeMove.csを作成して、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + dx, transform.position.y, transform.position.z + dz ); } } |
ゲームプレイしてみましょう。
Sphere側のスクリプトでは、Cubeが距離4.6の範囲内に入ってきたときに、重力がONになり落下します。
関連記事:
一定距離から外れたら実行する
他のオブジェクトに接近すれば繋がる
Fixed Jointを解除してオブジェクトを落とす
特定エリアに近づくと追いかけてくる
指定の座標まで落下すればPrefabを削除