プレーヤーが乗ったら落下していく床を作成してみましょう。
浮いている床の上に、Sphereが乗ったタイミングで、重力が働くようにします。
関連記事:
範囲内に入ればオブジェクトを落下させる
乗れば下降していく床
エレベーターをつくる
床オブジェクトの作成
Cubeを作成し、名前をFloorに変更。
サイズと座標を変更します。
Floorを複製して、名前をDropFloorに変更。
サイズと座標を変更し、リジッドボディを追加。
IsKinematicにチェックを入れます。
シーンビューではこのように表示されています。
FloorMove.csを作成し、DropFloorに追加します。
FloorMove.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 29 30 31 32 33 34 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FloorMove : MonoBehaviour { private float rayDistance; void Start() { rayDistance = 1.0f; } void Update() { Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.up); Debug.DrawRay(rayPosition, Vector3.up * rayDistance, Color.red); RaycastHit hit; if(Physics.Raycast(ray, out hit, rayDistance)) { if (hit.collider.name == "Sphere") { DropDown(); } } } void DropDown() { GetComponent<Rigidbody>().isKinematic = false; } } |
ゲームプレイして、シーンビューを確認してみましょう。
上に向かって、Raycastが赤色で表示されています。
プレーヤーが、Raycastにぶつかれば、IsKinematicgaがオフになるようにします。
プレーヤーの作成
Sphereを作成し、位置を変更。
リジッドボディを追加します。
Sphereを十字キーで操作できるように、スクリプトを作りましょう。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.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 SphereMove : MonoBehaviour { void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, 0.05f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -0.05f); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.05f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.05f, 0f, 0f); } } } |
ゲームプレイして、十字キーでSphereを操作しましょう。
DropFloorの上に乗り、少し動けばRaycastに接触。
IsKinematicが作用し、床が落下していきます。