投稿
みさき 116681
今シューティングゲームを作っているのですが、Aボタンで弾が沢山出る仕組みなのですが弾を撃つところを見せたいのでVSY…?(コードを忘れています。)みたいなコードを使ってスピードを抑えているのですが、そうすると自機の動くのが遅くなってしまうのです。どうしたら改善できますか? 分かる人お願いします。
2そうだね
プレイ済み
返信[1]
親投稿
みさき 116681
このようなプログラムです。2/1
0そうだね
プレイ済み
返信[2]
親投稿
みさき 116681
続きのプログラムです。
0そうだね
プレイ済み
返信[3]
親投稿
みさき 116681
追記 VSY…?と言っていたのはVSYNCです。
0そうだね
プレイ済み
返信[4]
親投稿
おにぎり EasyPuzzler65
73行目からが自機の動きですね。86行目でGOSUB @Aとしているから、@Aはサブルーチンですね。とするとRETURN文がありません。72行目にRETURNが必要でしょう。サブルーチンがプログラムの流れの 途中にあるのはまずい(意図せず実行されてしまう)から、100行目の後ろにまわすか, 72行目に挿入したRETURN文の次にもう1行追加して@MAINLOOP(と仮にしておきましょう)という ラベルを立て,46行目のところあたりからGOTO @MAINLOOPとして飛んでしまいましょう。
1そうだね
プレイ済み
返信[5]
親投稿
おにぎり EasyPuzzler65
さて,サブルーチン@Aが@MAINLOOP以下から呼ばれることが確定すれば、74行目に書かれたVSYNCで表示待ちは十分ですから、58行目のVSYNCはいりません、というか、これが遅さの原因ですからとってください。弾が動くためにここで確実に60フレーム時間がカウントされてしまって,それからやっと自機の動きを受け付けるBUTTON文にいくわけで、つまりこのプログラムではBUTTON文が1秒に1回しか実行されないので遅いのです。
1そうだね
プレイ済み
返信[6]
親投稿
みさき 116681
おにぎりさん  とても詳しい解説ありがとうございます!これでより良いシューティングゲームが作れそうです\(^∀^)/
0そうだね
プレイ済み