HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0916
2音楽ゲーム(リズムゲーム)のコード2解決


2

リンク

2017/9/16(Sat) 16:47:15|NO.81346

丸投げ状態で大変申し訳ないのですが、

http://hsp.tv/play/pforum.php?mode=pastwch&num=63729
上のスレの「暇人」様によるスクリプト(NO.63792)で、
●の右から左に流す方法(反転させる)が分かりません。
2日ほどエディタとにらめっこしてみたんですが・・・


#include "d3m.hsp" //d3timer()を使うので //0は前の音符の長さの休符(最初は4分休符)、1は4分音符の4倍の長さ、2は2分音符、4は4分音符、8は8分音符、9は16分音符 Sheet="44449990999088008800224444088880440440" notes_length=0.0,4.0,2.0,1.0,1.0,1.0,1.0,1.0,0.5,0.25 //音符のtim_beatに掛ける倍率 bpm=80 //一分間の拍数(4分音符の数) tim_beat=1000.0*60.0/bpm //一拍(4分音符)の時間(ms) beat_max=4 //Just_pos迄を何拍分にするか Just_pos=550.0 //ここをボタンを押すジャストタイミングを表す座標とする Just_tim=tim_beat*beat_max //発生からの経過時間のジャストタイミングを表すタイム(beat_maxが4なら4拍分の時間) notes_speed=Just_pos/Just_tim //速度(beat_max拍分の時間経過でJust_posに到達する速度) //文字列データに0以外があったら発生時間を配列に全て登録 notes_max=0 tim_index=0.0 ddim next_tim,strlen(Sheet) tim_add=tim_beat //初回休符の長さ repeat strlen(Sheet) notes_dat = int(strmid(Sheet,cnt,1)) if notes_dat ! 0 { notes_tim(notes_max)=tim_index //発生時間を登録 notes_max++ tim_add=tim_beat*notes_length(notes_dat) //今回登録した物の長さ } tim_index+tim_add //次の発生時間 loop notes_index=0 //これを開始要素数として発生時間の検索をする tim_s=d3timer() //スタート時間 *main redraw 0 color 255,255,255 boxf color pos Just_pos,240 mes "○" tim_next=d3timer()-tim_s //経過時間 stick k repeat notes_max-notes_index,notes_index if notes_tim(cnt)<=tim_next {//経過時間が発生時間以上 notes_elapsed_time=(tim_next-notes_tim(cnt)) //経過時間から発生時間を引いて発生からの経過時間にする(この結果とJust_timを比較すればタイミングでの処理が出来る) notes_pos=notes_speed*notes_elapsed_time //notes_elapsed_timeに速度を掛けて現在の座標にする if notes_pos>(Just_pos+50) {//Just_posより50ドット超えたらMissとして処理 notes_index=cnt+1 //次回から次の要素数からループ処理 hit=-1 hit_pos=notes_pos //現在の座標を保存 }else{//ここに来る●だけ判定する //キーが押されてたらnotes_posとJust_posを比較して差によってGOODなどの処理を別ける(これは座標での処理になるのでテンポが遅いほど難易度が下がる) pos notes_pos,240 color mes "●" } }else{//経過時間以内の発生時間登録が無かった break } loop if hit=-1 { Misstim=tim_next+100 //経過時間にMiss表示時間を足して、Miss表示終了時間にする hit=0 } if tim_next<Misstim {//経過時間がMiss表示終了時間以上になるまで下の処理をする pos hit_pos,240-30 color 255 mes "Miss" } await 16 redraw 1 goto *main

よろしくお願いします。



この記事に返信する


いののて

リンク

2017/9/16(Sat) 17:51:29|NO.81347

notes_posなどのノーツの座標が入った変数をウィンドウの幅から引けば逆に流れます。
あたり判定も反転する必要があります。

41行目:pos Just_pos,240 ↓ pos ginfo_winx-Just_pos,240 50行目:notes_pos=notes_speed*notes_elapsed_time ↓ notes_pos=ginfo_winx-notes_speed*notes_elapsed_time 52行目:if notes_pos>(Just_pos+50) ↓ if (notes_pos)<(ginfo_winx-Just_pos-50)



2

リンク

2017/9/17(Sun) 21:16:43|NO.81359

無事できました〜。こうすればよかったんですね。

勉強になりました。ありがとうございました!



ONION software Copyright 1997-2021(c) All rights reserved.