並べたオブジェクトに対してキーを割り当て、キーを押せばスクリプトが実行。
n秒間アクティブ状態にするしくみを作成しましょう。
3つのオブジェクトに3つのキーを割り当てて、押すと0.5秒間、赤色に変化します。
音ゲーなどのタイミングゲームで使用できそうなしくみです。
関連記事:
音ゲーのノーツみたいなオブジェクト動作
アクティブ状態のオブジェクトに当たれば消える
向かってくるオブジェクトをクリックで破壊
割り当てたキーでアクティブ状態にする
クリックすると1秒間だけ実行
キー入力で0.5秒間だけ実行
Cubeを3つ作成して、横並びに配置します。
中央、右、左のCubeでそれぞれ名前を変更します。
空のオブジェクトを作成。
ActiveCube.csを作成し、GameObject(空のオブジェクト)に追加します。
ActiveCube.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 49 50 51 52 53 54 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ActiveScript : MonoBehaviour { [SerializeField] GameObject[] cubeArray = new GameObject[3]; private bool isActiveA; private bool isActiveS; private bool isActiveD; void Update() { if(Input.GetKeyDown(KeyCode.A)) { StartCoroutine("CubeActiveA"); } if(Input.GetKeyDown(KeyCode.S)) { StartCoroutine("CubeActiveS"); } if(Input.GetKeyDown(KeyCode.D)) { StartCoroutine("CubeActiveD"); } } IEnumerator CubeActiveA() { isActiveA = true; cubeArray[0].gameObject.GetComponent<Renderer> ().material.color = Color.red; yield return new WaitForSeconds(0.5f); isActiveA = false; cubeArray[0].gameObject.GetComponent<Renderer> ().material.color = Color.white; } IEnumerator CubeActiveS() { isActiveS = true; cubeArray[1].gameObject.GetComponent<Renderer> ().material.color = Color.red; yield return new WaitForSeconds(0.5f); isActiveS = false; cubeArray[1].gameObject.GetComponent<Renderer> ().material.color = Color.white; } IEnumerator CubeActiveD() { isActiveD = true; cubeArray[2].gameObject.GetComponent<Renderer> ().material.color = Color.red; yield return new WaitForSeconds(0.5f); isActiveD = false; cubeArray[2].gameObject.GetComponent<Renderer> ().material.color = Color.white; } } |
要素0にはLeftCube、要素1にはCenterCube、要素2にはRightCubeを入れます。
ゲームプレイして、ASDの各キーを押してみましょう。
割り当てられた各オブジェクトが0.5秒だけ実行されて、アクティブ状態になります。
関連記事:
音ゲーのノーツみたいなオブジェクト動作
アクティブ状態のオブジェクトに当たれば消える
向かってくるオブジェクトをクリックで破壊
割り当てたキーでアクティブ状態にする
クリックすると1秒間だけ実行