ロングノーツの実装を行い、判定中に音符が飛び出す演出を作っています。以下のようなスクリプトを組みテストしていたのですが、ボタンを押している間パーティクルが再生されるようにしたいのですがボタンを離した瞬間のみ処理され、通常タップノーツや始点の判定・長押し中にパーティクルが再生されない状態に陥っています。
####コード
C#
1//このレーンでの判定タイミング中に特定のボタンを押す 2 if (_notegoes.testseikaku3[notec]+pefemin<musictim && musictim < _notegoes.testseikaku3[notec] + pefemax) 3 { 4 if (Input.GetKeyDown(KeyCode.J)) //Jキーを押す 5 { 6 switch (_notegoes.testypes3[notec]) //ノーツタイプを確認 7 { 8 //通常タップ/特殊タップでは破棄 9 case 1: 10 case 2:Destroy(_notegoes.gonotesC[notec]); 11 break; 12 //長押し始点2種の時は始点を画面外へ移動 13 case 3: 14 case 5:_notegoes.gonotesC[notec].transform.position = new Vector2(0, -6); 15 //座標を画面外にするはずが移動せず流れていく(消えたように見せかけたい) 16 break; 17 } 18 ScoreGet(2); //スコア処理 19 okefect.Play(); //ここでパーティクルが再生されるはずがされていない 20 notec += 1; 21 } 22 } 23 //長押し~終点側の処理 24 if (_notegoes.testypes3[notec] == 6) 25 { 26 //長押しの時間 27 checktime = _notegoes.testseikaku3[notec] - _notegoes.testseikaku3[notec - 1]; 28 29 if (_notegoes.testseikaku3[notec] >= musictim) //長押し区間中 30 { 31 if (Input.GetKey(KeyCode.J)) //キーを押している間holdcountを増加 32 { 33 holdcount += Time.deltaTime; 34 RingOn();//演出をオンにする 35 misstime = 0; 36 okefect.Play(); //パーティクル再生をここで常時行いたい 37 } 38 else //押していない間・離している間misstimeを増加 39 { 40 //(関係ないため割愛、holdcountを0にしmisscountを増加させる) 41 } 42 43 if (misstime > checktime / 2) //区間の半分以上押さないままだとミス 44 { 45 DeleteObj(2); 46 } 47 } 48 else if (_notegoes.testseikaku3[notec] < musictim)//終点到達 49 { 50 holdsum += holdcount; //ここまでの長押し時間を累積時間に足す 51 //本来の長押し時間と累計の長押し時間を比較、判定、エフェクトを発生 52 //この部分でのみパーティクルが再生されている 53 Hantei(holdsum, checktime); 54 //始点と終点を破棄 55 DeleteObj(2); 56 } 57 }
####目指すこと
・通常タップでもパーティクルの演出が出るようにする
・長押し中はパーティクルが繰り返し再生されるようにする
(・ロング始点が判定された後画面外へワープする)
開発環境 Unity2019.1.5f1 Visual Studio
とりあえずDebug.Logを入れて目的のif文内に入っているか(各値が想定通りか)確認してみてください。
あなたの回答
tips
プレビュー