投稿
VSYNC 38 NZMKN1038
このプログラムで赤髪の少年を右移動できるのですが、止まる時に時に歩行モーションが表示され、動く時は全くモーションがありません。 何が問題なのでしょうか?
2そうだね
プレイ済み
返信[1]
親投稿
パッと見た感じだと 右を押すたびにSPANIMを実行しているからかな
1そうだね
プレイ済み
返信[2]
親投稿
りゅう uramino
SPANIMの一番最後の0が曲者かも。 この最後の数字はループ回数で、0を指定しちゃうと「このアニメ命令は動いてようが止まってようがずっと続くからね」って宣言になっちゃう。 だから止まっても足踏みし続けるんだね。
0そうだね
プレイ済み
返信[3]
親投稿
まーくん MARK6502
プログラムリストを見ると、ラベル@AAAが有りますが、そこに戻ってループするように書かれていないので、最後の行にGOTO @AAAが要りますね。 それと、確かにSPANIMがループの中にあるので、ループ毎にアニメーションが初期化されてしまいます。 また、SPSET命令がないので、ACLSで初期化するとスプライトは表示されなくなります。 ループの外にSPSET命令が必要ですね。 右矢印が押されたときに変数Yを増やして縦(Y方向)に動かそうとしているように見えますが、SPOFSのパラメータをX,YではなくY,Xと書いているので、横(X方向)に動いちゃいますね。
0そうだね
プレイ済み
返信[4]
親投稿
りゅう uramino
だから、SPANIM命令の最後の0を1に変えると多少いい感じになりそう。 歩いている動きをしている間、他の命令を受け付けないようにWAIT 21 を付けるのもあり。
0そうだね
プレイ済み
返信[5]
親投稿
まーくん MARK6502
補足ですが、アニメーションの指定に"UV"を指定していますが、 指定を"I"にして、496番~499番のパターンを指定すると、判りやすいと思います。 SPSET 2,496 SPANIM 2,"I",7,496,7,497,7,498,7,499,0 XとYの話は、右に移動するのが目的のようなので、プログラムでは、 X=X+5 SPOFS 2,X,Y と書けば、プログラムの処理と実際の動きの意味が一致するので、見やすくなると思います。 実際に5ドットずつ移動していると、動いている間のアニメーションは殆ど見えないようですが。
0そうだね
プレイ済み
返信[6]
親投稿
色々ツッコミどころがありそうですが、とりあえずSPANIMはアニメーション開始のタイミングで実行するだけで常に実行してはいけません。常に実行すると毎回頭出しのように戻ってしまい、結果アニメーションが行われなくなってしまいます。 今回、止まったときにアニメーションがされているように見えるのは、動かそうとキーが入っている時は常にSPANIMが呼び出されてしまって頭出しで変化が起きない感じになっていて、止まったときにキーが入らなくなって始めてSPANIMの効果がちゃんと現れてアニメーションされるようになっているからです。
0そうだね
プレイ済み
返信[7]
親投稿
BUTTON(2) BUTTON(3) この2つの値を取得して アニメ開始と終了の設定が行えると 動いてる間だけ歩行アニメがつくように改良可能です 色々模索してみましょう
0そうだね
プレイ済み