トピック
ハンチョー morikekoyamata

色々な質問

今自分が作っているゲームのプログラミングについて質問します。まだ始めて1週間ほどしか経っていない初心者なので、できれば詳しく教えて下さい。お願いします。
0そうだね
プレイ済み
返信[1]
親投稿
ハンチョー morikekoyamata
右に移動するときには右向きで歩いているモーションを、左向きで歩いているときには左向きで歩いているモーションをそれぞれつけたいのですが、画像のプログラムを実行すると、それぞれ、 右向きー止まっている→歩くモーション    ー歩いている→止まるモーション 左向きー止まっているー歩くモーション    ー歩いているー止まるモーション になります。どうすれば直りますか。
0そうだね
プレイ済み
返信[2]
親投稿
厳密に言うと止まっているわけではなく、SPANIMが連続して動いて、止まっているように見えるのです。 BUTTON(2)のもうひとつの変数を作っておいて、それをアニメ部分に適用すれば大丈夫です。
0そうだね
プレイ済み
返信[3]
親投稿
ややこしいので。 IF B AND 4 THENのところにするのではなく、 SPANIMのところにIFを入れてください。
0そうだね
プレイ済み
返信[4]
親投稿
止まっているとき動いているのは、アニメーションが終了していないからで、 BUTTONで、十字キーが押されてないことをIFで感知し、SPSTOPすればok
0そうだね
プレイ済み
返信[5]
親投稿
ハンチョー morikekoyamata
原因はぼんやり分かったのですが、具体的にどのようにしたらいいのでしょうか。
0そうだね
プレイ済み
返信[6]
親投稿
SHUHEI Syuhei36
IF (十字ボタンが押されていない)THEN SPSTOP
0そうだね
プレイ済み
返信[7]
親投稿
ぴくと kanau1203
button(2)ってパルスでしたっけ それならボタンを押した瞬間にspanimさせて !button()のときにspstopをすればいいかと shuheiさんとしょぼーんさんの意見をふまえて
0そうだね
プレイ済み
返信[8]
親投稿
しょぼーんさんの言っているような形にするには35行目あたりで、 B2=BUTTON(2) のようにもう一つボタンの内容を保存しておいて、39行目のSPANIMのところで、 IF B2 AND 4 THEN SPANIM〜 って感じにすればいいと思いますよ。 あと止めるときにSPSTOPを使う場合、また動かしたいときにSPSTARTもいれないといけなくなるのでキャラの動きを止める目的ならば、 SPCHR 0,SPCHR(0) というやり方もあります。こっちの場合は、SPSTARTで再開しなくても次のSPANIMでアニメーションをさせることが出来ます。
0そうだね
プレイ済み
返信[9]
親投稿
ハンチョー morikekoyamata
BUTTON(2)の変数はできました。 動きを止める部分ですが、SPSTOPとSPCHRはどちらの方が簡潔で応用が効きますか?
0そうだね
プレイ済み
返信[10]
親投稿
どちらが良いかどうかはケースバイケースですよ。SPSTOPの場合はキャラの切り替え以外の動作も止めることが出来ますしね。ただ先ほど書いたようにSPSTOPしたものは、次にSPSTARTしないと動き出さないので、SPANIMのあとにSPSTARTをいれる必要があります。 ちなみにSPCHRで止められるのは、SPANIMで動かしている要素は別の命令で上書き(?)出来るという特徴を利用していて、SPCHRの場合はキャラクタの切り替えを今のキャラクタ番号SPCHR(0)を指定していることで止まるような動作になります。 どちらを利用するかはどっちが向いているかなども含めて判断した方がいいと思いますし、その辺も考えるとプログラムの考え方が深まると思いますよ〜。
0そうだね
プレイ済み
返信[11]
親投稿
ハンチョー morikekoyamata
ありがとうございました。上は解決できました。 新しい質問です。 221~224行目に、 Aボタンを押す→@GAME2へ Bボタンを押す→@TITLEヘ っていうプログラムを書きたいのですが、 Aを押す→@GAME2へ Aを押す→@TITLEへ Bを押す→@GAME2へ Bを押す→@TITLEへ エラー(アウトオブレンジ) となってしまいます。 どのように書き換えればいいですか。
0そうだね
プレイ済み
返信[12]
親投稿
ハンチョー morikekoyamata
訂正:[221~224]→[220~223]
0そうだね
プレイ済み
返信[13]
親投稿
SHUHEI Syuhei36
220>BUTTON([この中の数字が間違っています!])
0そうだね
プレイ済み
返信[14]
親投稿
SHUHEI Syuhei36
訂正。×220 → ○220~222 もう少し詳しく解説します。 BUTTON()のかっこのなかには、 「どのようなシチュエーションの時に、BUTTON()は、ボタンが押されていることを示す値(0ではない数)を返せばいいか」を表す数が入ります。 例えば、かっこの中に0を入れると、「今押されていれば」押されていることを示す値が返るようになります。 あなたの今の場合は2を入れるのが良いでしょう。 かっこの中に2を入れると、「押した瞬間だけ」押されていることを示す値が返るようになります。
0そうだね
プレイ済み
返信[15]
親投稿
ハンチョー morikekoyamata
C=BUTTON(2)にしました。 これ(画像)で実行すると、エラーは無くなりましたが、上記の問題がまだ発生します。どうすればいいですか。
0そうだね
プレイ済み
返信[16]
親投稿
ハンチョー morikekoyamata
例の「上記の問題」が分かりにくいと思ったので 「Aボタンを押すと、@GAME2にとび、Bボタンを押すと、@TITLEにとぶ」 というプログラムを作りたいが、 『Aボタンを押すと、@GAME2か@TITLE(何故かランダム)にとぶ(Bボタンでも同じことが起こる)』 というプログラムになっている。 自分にはどこがおかしいのかわからないので、直し方を教えて欲しい。
0そうだね
プレイ済み
返信[17]
親投稿
プログラムを見た感じBUTTONのところが直ってないような気が…。 あとGOSUBは必ずRETURNで戻る事が前提の命令なので、もし飛び先からRETURNで戻る予定がないのであればGOTOにした方がいいです。
0そうだね
プレイ済み
返信[18]
親投稿
ハンチョー morikekoyamata
これでいいですか。 これを実行すると、 Aボタンを押す→@GAME2へ Bボタンを押す→@GAME2へ と、それぞれ同じラベルにとんでしまいます。Bボタンを押したときは@GAME2へとぶようにできませんか。
0そうだね
プレイ済み
返信[19]
親投稿
IF BUTTON(2) THEN だけではなにかボタンが押されたら飛ぶという事になってしまいます。なので、Aボタンを押した時、としたいのなら IF BUTTON(2) == #A THEN もしくは IF BUTTON(2) AND #A THEN として明確にAボタンが押された時という判定にしなければいけませんね。Bボタンも同様です。
0そうだね
プレイ済み
返信[20]
親投稿
ハンチョー morikekoyamata
出来ました!ありがとうございました。 新しい質問です ゲームプレイ中にポーズ出来るようにしたいのですが、どうすればいいですか。
0そうだね
プレイ済み
返信[21]
親投稿
ゲームのメインループに IF (指定したボタン)THEN GOSUB @TIME みたいなのを入れて、 @TIMEは WHILE:WENDでループして、 何かボタン押されたかをIFかWHILEの条件式で判定して、RETUENするとできると思います。
0そうだね
プレイ済み
返信[22]
親投稿
ハンチョー morikekoyamata
画像のプログラムを実行すると、 ゲームスタート↓ 何故かポーズ画面で始まる↓ Rを押す↓ エラー となります。 プログラムのどこが間違っているのでしょうか。
0そうだね
プレイ済み
返信[23]
親投稿
@PALSEはメインループの外に置いてください。 たぶんエラーはRETUENに対応するGOSUBが無いってなるやつでしょう。
0そうだね
プレイ済み
返信[24]
親投稿
ハンチョー morikekoyamata
エラー»はい (画像のせようとしたら当てられてた) プログラム変えてきます。
0そうだね
プレイ済み
返信[25]
親投稿
あとIFでRETUENする場合は、WHILEの条件式は必要要りません。 WHILEでRETUENする場合は、ループのあとにRETUENして下さい。
0そうだね
プレイ済み
返信[26]
親投稿
しょぼーんさんも指摘されているようにボタン判定のWHITEに無駄がありますね。 例えば201〜204行目のWHILEも条件部分が無駄になってるんで、 WHILE 1 IF BUTTON(2)==#A THEN GOTO @GAME1 IF BUTTON(2)==#B THEN GOTO @TITLE WEND にした方がよりベストです。あとWHILEなどのループ中でボタン判定をする場合、ループの中にVSYNCをいれておくとよりベターで、さらにTHENのあとのGOTOは省略も可能です。 またWHILEの際はインデント(スペース)をいれた方がプログラムは見やすくなります。ボタン判定もIFで何度も参照する場合は一度変数に入れておいた方がいい場合が多いです。
0そうだね
プレイ済み
返信[27]
親投稿
と言うのを全て組み合わせると、上記のプログラムは、 WHILE 1 VSYNC B=BUTTON(2) IF B==#A THEN @GAME1 IF B==#B THEN @TITLE WEND になります。まあ変数に入れたぶん少し長くなってしまいますし、必ずそうしなければいけないというわけではないので参考までにという感じで…。
0そうだね
プレイ済み
返信[28]
親投稿
ハンチョー morikekoyamata
↑今回は省略しないでおきます。(教えてくれたのにすいません。次回プログラミングする時に活用したいと思います) ポーズ機能の件ですが、まだよく分からない(読解力・知識が無い)ので、できればプログラム全文を書いていただけないでしょうか。 あと、当たり判定のプログラムを組むのにSPHITSPは使えますか。使えるのであれば使い方を教えて下さい。
0そうだね
プレイ済み
返信[29]
親投稿
SPHITSPは、SP同士の当たり判定を取得するもので、SPCOLをして、当たり判定をつけます。 SP同士なら、有効な関数です。 というか、それ以外ありません。 (SPHITRCや自作関数はほぼ使わない) ポーズは、 @PALSE WHILE 1 B=BUTTON() GOTOで来たなら IF B==#R THEN GOTO @(メインループ名) GOSUBで来たなら IF B==#R THEN RETUEN WEND
0そうだね
プレイ済み
返信[30]
親投稿
ハンチョー morikekoyamata
当たり判定はSPHITSPに変えてきました。 画像のプログラムを実行すると、Rを押した瞬間だけ止まっているようになります。(GOTOを使いました) どこが間違ってますか。
0そうだね
プレイ済み
返信[31]
親投稿
Villit nakahara1226
WHILE 1のあとにVSYNCを、 BUTTON()をBUTTON(2)にしてみてはどうでしょう。
0そうだね
プレイ済み
返信[32]
親投稿
すいませんミスりまくりました。 言う通りです。
0そうだね
プレイ済み
返信[33]
親投稿
ハンチョー morikekoyamata
一度ポーズしたあとに解除しようとすると、一瞬だけ解除され、すぐにまたポーズになってしまいます。
0そうだね
プレイ済み
返信[34]
親投稿
ハンチョー morikekoyamata
GOTO命令をGOSUB命令に変えたらポーズできました。ありがとうございました。 新しい質問です。 自機狙いの敵はどうやって作るのでしょうか。
0そうだね
プレイ済み
返信[35]
親投稿
ハンチョー morikekoyamata
@PAUSEをコピペしたら機能しなくなりました。もの凄く意味不明です。 今日は寝ます。
0そうだね
プレイ済み
返信[36]
親投稿
前にあったGOTO @LOOPなどがなくなってますね。 プログラムは分岐などをしない限りは上から下に流れます。その間でメインループなどの無限ループがあれば、そこを繰り返します。(止まります) なので意味不明でもなくて、そういうプログラムになってしまっているんだと思いますよ。
0そうだね
プレイ済み
返信[37]
親投稿
ハンチョー morikekoyamata
なるほど、だいぶ分かってきました。 ポーズのプログラムは出来ました。ありがとうございました。
0そうだね
プレイ済み
返信[38]
親投稿
自機狙いか……… 自機狙いの敵というのはどうゆうイメージですか? ・自機めがけて飛んでいく敵 ・自機狙いの弾を飛ばしていく敵 ・その他 ただ、SPANIM "XY"で自機の位置を指定すれば大丈夫です。
0そうだね
プレイ済み
返信[39]
親投稿
ハンチョー morikekoyamata
「自機めがけて飛んでくる敵」でいいのかな?延々と自機をストーカーするイメージです。
0そうだね
プレイ済み
返信[40]
親投稿
つくってみたけど、トンデモなく違和感。 え?なんか・・・違う?
0そうだね
プレイ済み
返信[41]
親投稿
ハンチョー morikekoyamata
全然違わなくないですよ!思ってた通りになりました。ありがとうございました。 WORLD4作り終わったら一度公開してみます。かなりの難易度になっているはずです。(よく考えたらアイ○ナの耐久を連続でやるんと同じっぽいですね) タイトルにハカセとか入れてokですかね?
0そうだね
プレイ済み
返信[42]
親投稿
ダイジョーブですヨ!
0そうだね
プレイ済み
返信[43]
親投稿
ハンチョー morikekoyamata
投稿キーってこれですか? 【434XAX4D】
0そうだね
プレイ済み
返信[44]
親投稿
そーダヨ!
0そうだね
プレイ済み
返信[45]
親投稿
ハンチョー morikekoyamata
少しプログラムいじりました。投稿キーも変わりました。(画像) これから、3DSをする回数が減るので、ここにもあまりこれないと思います。だから、トピックを一度閉じます。時間がとれたら、また新しいトピックを開こうと思いますので、その時は協力をお願い致します。 これからも続けていこうと思いますので、見守って下さると幸いです。 最後にー このトピックや他の場所で僕にアドバイスを下さった皆さん、 本当にありがとうございました!               ノシ
1そうだね
プレイ済み