音楽ゲーム制作の方で前々から実装できなくて困っていることがあります。
曲開始から1.3秒のタイミングで4つ同時押しのような、複数のボタンを同時に押す横並びのノーツ群を生成する時、現在使用しているスクリプトではfor**Update()**の中身で変数が+1されるまでのわずかな差によって、読み込み用のjsonファイル内では全く同じ数値なのに階段のようにずれてしまいます。
###使用コード
C#
1void Update(){ 2 time =trackon.GetComponent<AudioSource>().time; //曲開始からの時間 3 4 if (time >= eei[f]) //タイミングデータをもつ配列の要素と比較 5 { 6 //numを参照 7 GameObject nt; 8 switch (rea[f]) //レーン情報をもつ配列の要素を確認 9 { 10 case 0: 11 basyo = -2f; 12 break; 13 case 1: 14 basyo = -0.25f; 15 break; 16 case 2: 17 basyo = 1.5f; 18 break; 19 case 3: 20 basyo = 3.23f; 21 break; 22 case 4: 23 basyo = 4.98f; 24 break; 25 default: 26 basyo = 3.6f; 27 break; //ノーツ生成位置をレーン情報に合わせて設定 28 } 29 nt = Instantiate(mi,new Vector3(basyo, 5.7f, -0.2f),Quaternion.identity) as GameObject; 30 noteGo.Add(nt); //リスト化 31 f += 1; //次のノーツへ 32 } 33}
以上の書き方でノーツを生成していますが、この書き方だと前述の通り横一直線にならずずれた階段状で流れてきてしまいます。生成をレーン数に合わせて分割する方法では同様のまま、後続のノーツタイミングを確認するものに関してはノーツエディタなどを使用していない手打ちのため同時押しのつもりがずれていることもあり無理でした。特に3レーンと5レーンの場合が特に厄介で、階段状のずれが起きているせいで譜面認識がまともにできない状況です。
####実装したいこと
変数fの更新によって起こる生成のずれをなくし、同時押しの時は何個であっても全て横一列に並んで降ってくるようにするコードを実装したいです。
使用環境
Unity2019.1.5f1 VisualStudio
追記
ソース内の処理に関しての説明にて間違いの記述をしていたため、そちらを修正しました
(✕ for ◯ Update()) 2020.11.20
回答2件
あなたの回答
tips
プレビュー