ある物体にぶつかれば、プレーヤーが数秒間、スピードアップできるしくみを作ってみましょう。
スタートのとき、Cubeはゆっくり動きだします。
Sphereにぶつかったタイミングで、3秒間だけスピードが上がり、またもとの速度に戻ります。
関連記事:
3秒おきに速度を上げる
数秒後にオブジェクトを出現させる
OnCollisionEnterとOnTriggerEnterの違い
オブジェクトを0.1秒おきにゆっくり拡大させる
移動してからn秒ストップをくり返す
触れている相手に一定間隔で力を加える
他のオブジェクトに触れると3秒間だけ速度が上がる
Plane、Cube、Sphereを作成し、それぞれのカラーをつけます。
CubeとSphereを地上に出して、少しだけ距離を取ります。
Cubeにリジッドボディを追加します。
Sphereのコライダーにチェックを入れましょう。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed; void Start() { speed = 0.01f; } void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, speed); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, speed * -1); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(speed * -1, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(speed, 0f, 0f); } } private void OnTriggerEnter(Collider other){ if (other.gameObject.name == "Sphere" ) { StartCoroutine("SpeedUp"); } } IEnumerator SpeedUp() { speed = 0.1f; yield return new WaitForSeconds(3.0f); speed = 0.01f; } } |
ゲームプレイして、Sphereオブジェクトにぶつかってみましょう。
スピードが上がり、3秒経ってから、また元のスピードに戻ります。
関連記事:
3秒おきに速度を上げる
数秒後にオブジェクトを出現させる
OnCollisionEnterとOnTriggerEnterの違い
オブジェクトを0.1秒おきにゆっくり拡大させる
移動してからn秒ストップをくり返す
触れている相手に一定間隔で力を加える