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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0109
sanuki音ゲーを作っています。譜面の落とし方がわかりません。3解決


sanuki

リンク

2013/1/9(Wed) 12:48:55|NO.51733

現在ビートマニアのような音ゲーを作っているのですが、譜面の落とし方がわかりません。

良い案がうまく思いつきません。

出来てるところは一つの譜面を落とすことぐらいです。

現在のやり方は txtから読み込んで 1だったら 変数に1を代入し

if文で 1だったら1の鍵盤の譜面を落とすみたいな処理をしています。

譜面を(例:1秒)くらい譜面を落とさないなどの処理

 _ ← 2個目の譜面   


   ← この間の(例:1秒)の空白の処理の仕方もわかりません。


_  ← 最初の譜面


__
1、2
のの
鍵鍵
盤盤

わかりづらい説明ですいません。


仕様としては3鍵盤でやろうと思っています。



この記事に返信する


YSR

リンク

2013/1/9(Wed) 19:22:56|NO.51737

版権はこの際置いといて、何か大事なことを忘れてね?
ノーツを「ある特定の間隔」(四分音符とか八分音符とか)で
ポンポン表示させるんだから、その間隔を表す情報が必須なんじゃね?
例えばこんな感じ。
--------------------------------------------------
(1鍵盤分、君が代冒頭):
1行目:2,1,2,3,5,3,2,3,5,6,5,6,9,7,6,5
2行目:4,4,4,4,4,4,8,4,4,4,2,2,4,4,4,4

↑1行目が音程、2行目が間隔。両方コンマ区切りで、
音程部分は1〜9がド(C4)〜レ(D5)に対応(旧休符は0)、
間隔は16分音符を1とする音符の長さを示す。
--------------------------------------------------
もちろん、テンポ情報とか曲名・アーティスト情報とか、より色々な情報が要るけどね。

ノーツの間隔制御にはawaitが適切と言っておく。
つまり、例えば120BPMで4分間隔で落とすなら、60/120[s]=500[ms]の間隔で落とすようにする。
ただ、自分が音ゲーもどきを作った時の経験からすれば、
1ループ毎にノーツの位置を計算してやって、画面内に収まるもののみ描画すれば大丈夫かな。



@key

リンク

2013/1/9(Wed) 22:40:37|NO.51742

簡単に言うと、


スプライト方式にする

落ちてくる譜面の一つ一つを独立したスプライトとして扱い
XspeedYspeed等も記録して毎フレーム描画します
テキストファイルの方は「**:**の時間に**のスピードで落とす」的な感じに記録します

プログラム内での処理には2次元配列を使います
引数は最低限(X,Y,VX,VY,mode)の5つが必要です VX,VYはXspeedYspeedと思ってください
dim sprite,100,5 ;こんな感じ この場合スプライトID6のモードは sprite(6,4)になる
モードで符のテクスチャや終了を記録したりします
モード0になってる時は空き枠で、新しいスプライトが来たら自動的に空き枠に入れるようにします

別にスプライト方式でなくてもYSR様の方法でいいんですが、スプライト方式にすると譜面調整も楽で後で応用も効くはずです
他とは違う音ゲーを作りたいなら間違い無くこの方法(のはず・・・)



sanuki

リンク

2013/1/10(Thu) 10:02:48|NO.51749

説明下手な質問に答えていただきありがとうございました!
スプライト方式を採用してやってみようと思います!
とても参考になりました!おかげで譜面を落とすところまで完成致しました。
回答してくれた方々ありがとうございました。



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