トピック
shoum shoum0403

横スクロールアクションゲーム 質問

まずは横スクロールアクションゲームの基本中の基本 キャラクターをジャンプさせたいです。 移動やキャラクターの表示などは後でつけたすので、 ジャンプだけのプログラムを教えてください。 できれば説明ありで、 宜しくお願いします。
0そうだね
プレイ済み
返信[1]
親投稿
だにえる haru2016nen
キャラクターの表示は先にやっておいた方が 良いかも。 キャラクターというのはSPでしょうか?
0そうだね
プレイ済み
返信[2]
親投稿
shoum shoum0403
はい!
0そうだね
プレイ済み
返信[3]
親投稿
だにえる haru2016nen
とりあえず、 これがジャンプだけのプログラムになります。 解説の前に… SPSET SPOFS という命令は分かります?
1そうだね
プレイ済み
返信[4]
親投稿
shoum shoum0403
はい!わかります!
0そうだね
プレイ済み
返信[5]
親投稿
だにえる haru2016nen
「自然なジャンプをさせる」というのは 「物理学的な移動をさせる」ということです。 物理学的な動き… この場合は"物体が落下する時の法則" を使います。
1そうだね
プレイ済み
返信[6]
親投稿
だにえる haru2016nen
物体は落とされた時、 落ちる速度が加速しながら落ちていきます! プログラム内の変数Yがキャラクターの 高さとなるので、 Yが落下の方向…つまり 落下するときは変数Yが大きくなると いうことです。 ここまでの説明は分かりましたかね?
0そうだね
プレイ済み
返信[7]
親投稿
だにえる haru2016nen
まあ、落ちる速度の加速には限度があるので、 そういう意味では自然的ではありません。
0そうだね
プレイ済み
返信[8]
親投稿
shoum shoum0403
はい。分かりました!
0そうだね
プレイ済み
返信[9]
親投稿
だにえる haru2016nen
6行目のIF文。 これは、落下の処理によって 決められたところよりも下に落下して しまわない為のものです。
0そうだね
プレイ済み
返信[10]
親投稿
shoum shoum0403
ふむふむなるほど
0そうだね
プレイ済み
返信[11]
親投稿
だにえるs»我が君あなた様はなんて丁寧なんでしょう。尊敬します。
2そうだね
プレイ済み
返信[12]
親投稿
だにえる haru2016nen
プログラムは写しましたか? 落下の処理を分かりやすくするため、 13~15行目を一旦外します。 »あおりイカs ありがとうございます!
0そうだね
プレイ済み
返信[13]
親投稿
だにえる haru2016nen
5行目でYをADDYの分だけ足していて、 これが落下となります。 4行目でADDYを増やしているので "加速しながら落ちていく処理"が 作れるわけです。 0.1が加速する数値なので、 試しに 0.5とかにすると、だいぶ速くなるのが 分かると思います!
1そうだね
プレイ済み
返信[14]
親投稿
だにえる haru2016nen
AIRという変数、 これはキャラクターが 「空中にいる/いない」を判断するため のもので、 AIR==0なら地上、 AIR==1なら空中 ということになります。 6行目のIF THEN AIR=0 ELSE AIR=1 で数値を入れているわけです。
0そうだね
プレイ済み
返信[15]
親投稿
だにえる haru2016nen
13行目のIFになりますが、 BUTTON() AND #A && ! の意味はそれぞれ分かりますか?
0そうだね
プレイ済み
返信[16]
親投稿
shoum shoum0403
Aボタンが押された時、?かな? それとELSEっていうのはどういうことでしょう?
0そうだね
プレイ済み
返信[17]
親投稿
だにえる haru2016nen
IF 「A」 THEN 「B」 ELSE 「C」 ENDIF IFは「A」の条件が成立したときに、 「B」を実行する。 これが基本ですね。 逆に、「A」の条件が不成立の時に、 ELSE にある「C」を実行するわけです。
0そうだね
プレイ済み
返信[18]
親投稿
だにえる haru2016nen
ENDIFはIF文が2行以上の時に必要って いう、それだけです。 ちなみに、 ELSE  IF「D」THEN と、したい場合は ELSEIFと言う命令があるので ELSEIF「D」THEN と、しましょう。
1そうだね
プレイ済み
返信[19]
親投稿
だにえる haru2016nen
&&は条件をいくつも繋げる時に使います。 例えば、 IF 0<HP && 0<MP THEN だと、 0<HP であり、かつ 0<MP の時に成立します。 ¦¦という記号も同様で、 IF 0<HP ¦¦ 0<MP THEN とした場合は、 0<HP、0<MP のどちらか1つでも合っていれば成立します。
0そうだね
プレイ済み
返信[20]
親投稿
だにえる haru2016nen
!AIR の「!」はAIRの数値を"反転"します。 反転させると !0 →1 !1 →0 !-1 →0 !0.5 →0 !-0.5→0 というように、 0なら1に、 0以外なら1 と、なります。
0そうだね
プレイ済み
返信[21]
親投稿
だにえる haru2016nen
つまり、 AIR==0を !AIRとして、 プログラムを短くする"テクニック"です!
1そうだね
プレイ済み
返信[22]
親投稿
だにえる haru2016nen
そうやって、 ジャンプは 「Aボタンが押された」かつ「地上にいる」 ことで成立するようにしています。 ADDY=ADDY-5 は、ADDYはYの変化値であり、 "落下の速度"です。 つまり、マイナスにすることによって、 落下ではなく上昇 と言う状態になります!
0そうだね
プレイ済み
返信[23]
親投稿
だにえる haru2016nen
↑誤:ADDY=-5 4行目でADDYは増えていくので、 ジャンプ後にも落下する。というわけです。
0そうだね
プレイ済み
返信[24]
親投稿
だにえる haru2016nen
数値を変えることで、 落下速度、ジャンプの高さを変える ことが出来るので、やってみよう!
2そうだね
プレイ済み
返信[25]
親投稿
kirarin 2015-manato
投稿主は、だにえるさんが言っていることをわかっているのか...謎だ
1そうだね
プレイ済み
返信[26]
親投稿
shoum shoum0403
細かくありがとうございます。 とても分かりやすかったです!
2そうだね
プレイ済み