オブジェクトに触れると一定時間だけプレーヤーの動きが止まり、テキスト表示させる仕組みをつくりましょう。
プレーヤーがSphereに触れると、2秒間うごけなくなって、「ぶつかった!」の文字が出てくるようにします。
関連記事:
コルーチンを使って1秒後にテキストを消す
タイムアップでテキストを表示
ぶつかればn秒間ストップ
ボタンを押して入力テキストを表示させる
クリックするたびにタイマー作動
キー押下から押下までの秒数をはかる
オブジェクトをクリックすればテキスト表示
プレーヤーの動きを止めてテキスト表示
CubeとSphereを作成し、少しだけ距離を離します。
Cubeにリジッドボディを追加し、Use Gravityのチェックを外します。
テキストを作成し、設定を以下のようにしました。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CubeMove : MonoBehaviour { private bool isStop; [SerializeField] Text message; void Start() { isStop = false; } void Update() { if(!isStop) { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + moveX, 0, transform.position.z + moveZ ); } if(isStop) message.text = "ぶつかった!"; else message.text = ""; } void OnCollisionEnter(Collision other) { if (other.gameObject.name == "Sphere") { isStop = true; Invoke("TextCall", 2.0f); } } void TextCall() { isStop = false; } } |
メッセージのフィールドに、Textを入れます。
ゲームプレイして、Sphereにぶつかってみましょう。
2秒間だけ身動きがとれなくなり、その間「ぶつかった!」のテキストが表示されます。
関連記事:
コルーチンを使って1秒後にテキストを消す
タイムアップでテキストを表示
ぶつかればn秒間ストップ
ボタンを押して入力テキストを表示させる
クリックするたびにタイマー作動
キー押下から押下までの秒数をはかる
オブジェクトをクリックすればテキスト表示