Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
次のページ(過去)
返信[16]
親投稿
Syntaxエラーなので文法や構文が間違ってるというエラーですねー…。 一見Iのところ以外は間違ってないような気がしますが、前にスペースがおかしかったことなどもあったので、スペースの部分を一度消して入れ直してみる、とかいうのも手です。 あとその行はマルチステートメント(:)を使ってる行なので、その行を:の部分から2つに分けて2行にするとエラーが出たときに、どっちの命令に問題があるかで行番号が変わるので、デバッグの時はそういうやり方もしてみた方がいいですね。
0そうだね
プレイ済み
返信[12]
親投稿
何行目でどういうエラーが出てますか? あと13行目のSPPOSはIじゃなくて1ですね。まあそこは間違えていても動作がおかしくなるだけでエラーにはなってないような気がしますが…
0そうだね
プレイ済み
返信[10]
親投稿
改行を入れる場所が悪いのでTHENは前の行の最後に追加してくださいー。 その際、スペースは忘れないでくださいね。
0そうだね
プレイ済み
返信[3]
親投稿
BGとの判定ならASAさんの言うようにSPよりはBG系の命令ですね。 ちなみに16で割らなくてもBGGETの第4引数を1にすればスプライト座標のまま判定できますよ。
0そうだね
プレイ済み
返信[7]
親投稿
VSYNCも欲しいですね。
0そうだね
プレイ済み
返信[8]
親投稿
たとえばキャラのX座標の変数がXだとしたら、画面右端の作業は400として、360以上ならスクロールするという条件にした場合、 SX = 0 IF X > 360 THEN SX = X - 360 'スクロール量 X = 360 ENDIF のような感じですかね。こうすればXは360以上にはならないので、あとはこの時求められるSXが0でない場合は、その値の分、画面をスクロールさせてあげればいい事になります。
1そうだね
プレイ済み
返信[6]
親投稿
正直、始めから色々やろうとするのは大変だとは思います。 個人的にはまずスクロールしなくてもいい1画面で成立するゲームからスタートしてだんだんと強化していく方がいいかなぁ、と思います。 スクロールしなくても面白いゲームは色々ありますしね。 まあでも、挑戦すること自体は悪い事ではないですし、制作する上では目標があった方がいいのは事実なので、挫けずに頑張ってください!
1そうだね
プレイ済み
返信[4]
親投稿
アクションゲームでも背景だけが動くのはマレだと思いますよ。 通常はキャラクターが移動して一定範囲外になった時に背景をスクロールしたりする感じだと思いますね。 その為には一定範囲外かどうかの判定や、範囲外だったときにどのぐらい出ているかを調べて、そのぶん背景をスクロールさせてキャラの位置はその場所から変えない、などの処理をする感じになると思います。
1そうだね
プレイ済み
返信[1]
親投稿
がんばれ〜
0そうだね
プレイ済み
返信[20]
親投稿
何とか説明が終わりました! もしこれ以上の細かい説明が欲しい方はコメントくれれば答えます〜。ちょっと駆け足な部分がありますしね。 書いていて思ったのですが、管理番号と定義番号は混合しやすいかもですね。 管理番号とは自分で管理するスプライトの番号になります。定義番号は、そのスプライトの内容(グラフィックや反転情報など)を定義してある番号です。定義番号の内容も自分で変えることが出来ますがデフォルトで用意されているので、始めはそれを使うことが多いんじゃないかなって思います。 ということで、とりあえずここまで! ご静聴ありがとうございました!
0そうだね
プレイ済み
返信[19]
親投稿
さてラストスパートです! 27:定義番号1のスプライトの表示位置を変更しています。上の行で求めたX,Yを用いて表示位置を決めています。一応Z方向も計算で出してみたいのでジャンプすると飛び出るのですが、これはあまり意味が無いですねー…。遊んでみただけです(^^; 28:おきまりのVSYNCです。引数を省略しているので1になり、1/60秒の同期を取るためのウエイトになります。 ループで画面を更新する際は、これを入れないと速度が安定しなかったり動作が不安定になる事が多いようなので、おまじないのように入れておきましょう。 29:そして@LOOPの場所へループ! これでこの間が繰り返されてキャラクターが動くようになりますね。これがないとこの時点で終わってしまうので必要です。
0そうだね
プレイ済み
返信[18]
親投稿
24,25:IF文の終わりのENDIFです。IFを1行で書く場合は不要ですが、この例のように複数行にする場合は、IFの終わりがわからないのでこのように終わりがわかるようにする必要があります。 また気づいた人も居ると思いますが、この間のところでは行頭にスペースが入っていますよね。これはインデントと言ってIFやFORなどを使った際に、その範囲をわかりやすくするためのものです。これがあるとないとでは見やすさが全然違うので、みなさんも是非入れるようにして欲しいですね。 また適度に改行(空行)を入れるのも見やすくするコツなのでオススメです。
0そうだね
プレイ済み
返信[17]
親投稿
22:よく質問があるSPANIMを使ってのアニメーションです。この命令は色んな記述が出来るので初心者は使い方がわかりにくいようです。とりあえず命令表は必読ですね。 この部分は、管理番号(1)に対して、"I"(定義番号変更)のアニメーションを指示しています。そのアニメーション内容は次からの4,D,4,D+1,4,D+2,4,D+3の部分で、(時間,定義番号)の繰り返しになっています。この場合は4つ分あるので4パターンの切り替えになりますね。また最後に0としているのでループで繰り返されることになります。この部分が1だと1回しか再生されません。 23:定義番号1のアニメーションを開始しています。実はこの命令がないと20番で一度アニメーションを止めてしまっているので止まったままになってしまいます。もし自分で止めていなければ、この命令がなくてもアニメーションは開始されます。
0そうだね
プレイ済み
返信[16]
親投稿
19行目〜25行目はアニメーションに関する部分です。 19:D(新しい定義番号)とND(前の定義番号)を比較して変わっていたら20〜25行目を実行します。この部分がないと毎回呼び出されるのでアニメーションを指示していても毎回リセットされることになるので変化が無い場合はスキップするようにしてあります。 20:とりあえずアニメーションと止めます。方向の変化には停止も含まれるので一旦止めてから以降の判定で移動していたら再度アニメーションを開始するようにしています。 21:不等号がない条件文ですが、この場合は0以外、という意味になり、定義番号が0(停止時に入る)以外の時は22,23行目のアニメーション関係の処理を実行するようにしています。
0そうだね
プレイ済み
返信[15]
親投稿
17:Y座標に加速度(AY)を足して縦方向への移動を決定しています。その後、AYに1(重力想定)を加算しています。この値を増やすと重力が強くなり、減らすと低くなります。 またY座標に加算した結果、地面の位置より低くなってしまう場合(Y>GY)は加速度(AY)を初期化してY座標の位置も地面の位置に補正しています。
0そうだね
プレイ済み
返信[14]
親投稿
15:Aボタン(16)が押されていたときにジャンプをさせるための処理です。この時に、前に求めたKで判定するとAボタンを押しっぱなしにした時にずっとジャンプを繰り返してしまうので、押した瞬間だけにしたくてBUTTON(2)の呼び出しをしています。 またジャンプは地面に足が着いている時にしかしたくないので、Y座標が地面(GD)に着いているかも同時(&&)に条件としています。ジャンプ出来るときはY座標への加速度であるAYに-8を設定して上方向への力を加えています。この数字をマイナスに増やすとジャンプ力が高くなり減らすと低くなります。
0そうだね
プレイ済み
返信[13]
親投稿
MAXやMINを使っている箇所は通常なら、 IF X < 0 THEN X = 0 IF Y > 400-16 THEN X=400-16 でも問題ないです。今回は1画面に収めたかった事もあって、こういう書き方をしてしまいました。またこれを応用すると、 X = MAX(MIN(X, 400-16),0) と書くことで上記の2つのIF文を同時に実行したかのような結果を得ることも出来ます。※ワンポイント?
0そうだね
プレイ済み
返信[12]
親投稿
何となく続き。 13:K(ボタン入力)をANDで判定して4(左)だった時の処理を書いてます。 D(定義番号トップ)を方向に合わせて変えて、X方向を減算(ダッシュ状態も加味)して左に移動させているのですが、この時にXが0未満にならないようにちょっと小細工しています。それは、 MAX(X-(2+DX), 0)の部分ですが、このMAXという命令は2つの値の最大値を返す関数なのですが、0と比較しているので結果は必ず0以上の値になります。ということで求めたXが0以上ならそのままの値になり、0より小さくなってしまったら0になる事で、画面の外にはみ出ないようになっている、というわけです。 14:右方向に対して13行目と同様の処理をしています。ただこちらは値が増えるのでMIN関数を使うことで画面の外にはみ出ないように調整しています。
0そうだね
プレイ済み
返信[8]
親投稿
僕のコメント、22行目じゃなくて12行目でしたね…。22行目なんてないし…。 たもつさんのコードも22行目辺りが妥当だと思いますよ。キーの処理は固まってた方がいいですしね。
0そうだね
プレイ済み
返信[11]
親投稿
おかしいですね。たしかに見えないです。 もしかしたら前に実行した他のプログラムが影響している可能性もあるので、今のプログラムをセーブしてから一度プチコンを終了させて、再度起動してみてもらえますか? さすがにプチコンを終了させれば完全に初期化は出来ると思うので。
1そうだね
プレイ済み