音ゲーを作っていて判定ラインのところでPerfect,Missの2つをアニメーションで表示しています。
コルーチンを使って指定時間後に非アクティブ状態にしているのですが、デバッグを実行してもその行には行かずに
終わってしまいます。コルーチンを使って中でアニメーションを呼び出しているのですが、最初のアクティブ状態に
する処理とアニメーションを開始する処理は通るのですがそれ以降の処理がなぜか通りません。
enabledをtrueにしたりfalseにしたりを中身に書いたりしたのですが、yield return new WaitForSeconds
の次の行が実行されません。なぜ実行されないのか等、具体的なことがあれば教えてください。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Notes : MonoBehaviour 7{ 8 private GameController _gameController; 9 [SerializeField] private int laneNum; 10 public static bool _inLine = false; 11 private KeyCode _laneKey; 12 private Animator[] _pAnim = new Animator[8]; 13 private Animator[] _mAnim = new Animator[8]; 14 15 void Start() 16 { 17 _gameController = GameObject.Find("GameController").GetComponent<GameController>(); 18 _laneKey = GameUtil.GetKeyCodeByLineNum(laneNum); 19 20 for (int i = 0; i < _pAnim.Length; i++) 21 { 22 _pAnim[i] = _gameController.perfectText[i].GetComponent<Animator>(); 23 } 24 for (int i = 0; i < _mAnim.Length; i++) 25 { 26 _mAnim[i] = _gameController.missText[i].GetComponent<Animator>(); 27 } 28 } 29 30 void Update() 31 { 32 this.transform.position += Vector3.down * 10 * Time.deltaTime; 33 34 if (this.transform.position.y < -3.8f) 35 { 36 StartCoroutine(MissAnimation(laneNum)); 37 } 38 39 if (this.transform.position.y < -5.0f) 40 { 41 this.gameObject.SetActive(false); 42 GameController._combo = 0; 43 _gameController.comboText.gameObject.SetActive(false); 44 } 45 46 if (_inLine) 47 { 48 TapNotes(_laneKey); 49 } 50 } 51 52 private void OnTriggerEnter2D(Collider2D collision) 53 { 54 _inLine = true; 55 StartCoroutine(PerfectAnimation(laneNum)); 56 this.gameObject.SetActive(false); 57 _gameController.GetUIText(laneNum); 58 } 59 60 private void OnTriggerExit2D(Collider2D collision) 61 { 62 _inLine = false; 63 } 64 65 private void TapNotes(KeyCode key) 66 { 67 if (Input.GetKeyDown(key)) 68 { 69 //StartCoroutine(PerfectAnimation(laneNum)); 70 //_gameController.GetUIText(laneNum); 71 //this.gameObject.SetActive(false); 72 } 73 } 74 75 private IEnumerator PerfectAnimation(int num) 76 { 77 _gameController.perfectText[num].gameObject.SetActive(true); 78 _pAnim[num].Play("Perfect", 0, 0.0f); 79 yield return new WaitForSeconds(0.3f); 80 _gameController.perfectText[num].gameObject.SetActive(false); 81 } 82 83 private IEnumerator MissAnimation(int num) 84 { 85 //_mAnim[num].enabled = true; 86 _gameController.missText[num].gameObject.SetActive(true); 87 _mAnim[num].Play("Miss", 0, 0.0f); 88 yield return new WaitForSeconds(0.3f); 89 //_mAnim[num].enabled = false; 90 _gameController.missText[num].gameObject.SetActive(false); 91 } 92}
該当のソースコードを載せておきます。
今はDebug中でOnTriggerEnter2Dの中でPerfectAnimation()を読んでいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/02 04:41
2020/10/02 04:51
2020/10/02 07:25
2020/10/02 07:47
2020/10/02 12:44