近づけば倒れてくるような動きを、スクリプトで作成してみましょう。
プレーヤーが近づけば、円柱オブジェクトが倒れてきます。
あるエリアに入れば倒れるように、広めの当たり判定としてコライダーを作成します。
関連記事:
範囲内に入ればオブジェクトを落下させる
一定距離から外れたら実行する
特定エリアに近づくと追いかけてくる
非アクティブのオブジェクトを当たり判定で取得
エリア内に入れば倒れるオブジェクト
PlaneとCylinderを作成します。
Cylinderにリジッドボディを追加し、Y方向へ拡大。
少し左のほうへ移動させます。
続いて、当たり判定を作成していきます。
空のオブジェクトを作成し、Cylinderと同じX:-1へ移動。
スフィアコライダーを作成して、トリガーにするにチェック。
半径を4に設定しました。
シーンビューではこのように見えています。
FallDown.csを作成し、GameObjectに追加します。
FallDown.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FallDown : MonoBehaviour { [SerializeField] GameObject pole; Rigidbody rb; void OnTriggerEnter(Collider other) { if(other.gameObject.name == "Cube") { rb = pole.GetComponent<Rigidbody>(); rb.velocity = transform.right.normalized * 1; } } } |
Poleのフィールドに、Cylinderを入れます。
プレーヤーの作成
プレーヤーとしてCubeを作成し、位置を変更。
リジッドボディを追加して、回転を固定します。
ゲームビューではこのように見えています。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.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 27 28 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed = 0.05f; void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, speed); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -speed); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-speed, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(speed, 0f, 0f); } } } |
円柱が倒れたときにバウンドするように、物理マテリアルを追加しましょう。
プロジェクトビューを右クリック > 作成 > 物理マテリアル。
ここでは、Bouncinessを1にしました。
New Physic Materialを、Cylinderに追加します。
ゲームプレイして、Cubeを操作してみましょう。
円柱に近づいて、ある一定の距離になると、倒れてきます。
関連記事:
範囲内に入ればオブジェクトを落下させる
一定距離から外れたら実行する
特定エリアに近づくと追いかけてくる
非アクティブのオブジェクトを当たり判定で取得