プレイ日記
SOU MARIO-LUIGI-0106
スプライトをずっと動かし続けるには、 「SPOFS」を使いますか? できれば書き方も教えてください。 ちなみに画像のやつは いちごを十字ボタンで動かすだけの テストプログラムです。
10そうだね
プレイ済み
返信[1]
親投稿
ずっと動かし続ける(アニメーション)なら SPANIMでよかったハズですよ…!
1そうだね
プレイ済み
返信[2]
親投稿
おっと…記述の仕方は SPANIM 管理番号,“XY“,スピード,移動先x座標,移動先y座標 ですー( ´∀`)
1そうだね
プレイ済み
返信[3]
親投稿
say sayer.exe
注意: spanim "xy"でアニメさせてる時に、spofsを使ったら、そこでアニメが中断されてしまいます ☆同じ系統の命令なら同様に中断されます
1そうだね
プレイ済み
返信[4]
親投稿
say sayer.exe
さんぷる いろいろいじってちょ
1そうだね
プレイ済み
返信[5]
親投稿
BlackSoft BlackSoft.mkII3g
「十字ボタンで動かす」という事から、操作に対して動かし続ける方法はあるか?という事だと解釈してみた上で回答します。 皆さんが言うように、SPANIMは同じ動作を続けさせるのに適していますが、直線的な動作しか定義できません。直線的な動作を幾つか繋げれば意図した動作が出来るかもしれませんが、繋げる個数には制限があります。 複雑な動作を続ける場合には、フレーム単位で処理してやるのが一般的です。 例えば、添付のプログラムは「みかんを中心にイチゴが円運動を続ける」というものです。 この機会にSPFUNCを習得してしまいましょう!
1そうだね
プレイ済み
返信[6]
親投稿
STiNGER STiNGER8901
プログラムがどんな風に組んであるか、見せてください。
0そうだね
プレイ済み
返信[7]
親投稿
ツララ LongIceSword
スプライトの移動に限らず、ずっと何かをし続ける処理はループの作り方が分かっていれば解決出来るんじゃないです? SPANIM命令もアニメーションパターンのループ回数を指定する引数ってのがありますし。(省略時は0で無限ループ扱い) あろーのようなもの。さんがSPANIM命令を挙げてるのも、多分BlackSoftさんのサンプル中に使われているREPEAT~UNTILのループに該当する繰り返し処理がSPSTOP命令や該当パラメータを変更する他のスプライト系命令を使わない限り止まらないので、難しい事を考えなければ一番簡単に書けるからだと思いますよ。 っていうのがsayさんのサンプルの内容ですね。 そういえばSPANIM命令のアニメ対象に"UV"ってのもありますけど これを上手く使うとスロットマシンのリールみたいな表現が簡単に出来たりするんですよね。
0そうだね
プレイ済み
返信[8]
親投稿
spset 0:x=10:xv=1 @loop if x>=400 then xv=-1 if x<=0 then xv=1 x=x+vx spofs 0,x,100 vsync goto @loop まあ、一応ね(´ρ`)
0そうだね
プレイ済み
返信[9]
親投稿
SOU MARIO-LUIGI-0106
ちなみに僕は、 他のSPも同時に 移動させたいです。
0そうだね
プレイ済み
返信[10]
親投稿
SOU MARIO-LUIGI-0106
ちなみに、これが今のプログラムの画面です。 いちごを操作でき、 みかんを自動で動かしたいです。
0そうだね
プレイ済み
返信[11]
親投稿
BlackSoft BlackSoft.mkII3g
やりたいことの大枠が読めました。 要するにマリオのように、 「1体のキャラを操作できて、他の多くの敵が勝手に動き回る」 という事ですよね。 プログラムを見ると、ボタン操作でいちごを動かす部分は出来ていて、しかもループの使い方は解っているようなので、後は「毎フレーム、ミカンを動かす」だけですよ。考え方はいちごと同じ。ボタン操作した値を使うか使わないかの違いだけです。 というのがヒント☆
1そうだね
プレイ済み
返信[12]
親投稿
BlackSoft BlackSoft.mkII3g
6行目のSPSETはループの外に出しましょう。
0そうだね
プレイ済み
返信[13]
親投稿
SOU MARIO-LUIGI-0106
なるほど… やってみます! (今日はできないかも)
0そうだね
プレイ済み
返信[14]
親投稿
SOU MARIO-LUIGI-0106
質問が多くてすいません… いちごは表示されてもみかんは表示されません。 ループしているからだと思います。 どうにかなりませんか? (ミーバースが終わるまでに 色々覚えないと…)
0そうだね
プレイ済み
返信[15]
親投稿
say sayer.exe
イチゴもみかんも同じループの中に入れましょう それぞれ独立したループじゃダメよ
0そうだね
プレイ済み
返信[16]
親投稿
SOU MARIO-LUIGI-0106
端に行ったら反対に移動するには どう書けばいいですか?
0そうだね
プレイ済み
返信[17]
親投稿
BlackSoft BlackSoft.mkII3g
考え方をそのままコードにするだけです。 x座標<0 かつ 速度のx軸成分<0 x座標>384 かつ 速度のx軸成分>0 上記どちらかを満たすとき、速度のx軸成分の符号を反転させましょう。
0そうだね
プレイ済み
返信[18]
親投稿
SOU MARIO-LUIGI-0106
こんな感じですか? 間違ってますか?(多分間違っている) プログラミングって難しいですね…
1そうだね
プレイ済み
返信[19]
親投稿
BlackSoft BlackSoft.mkII3g
まず、ORVXという変数を定義。 オレンジのX軸速度です。初期値は3くらいにしましょう。 次に、19,20行目をまとめて下記に修正。 IF (ORX<0 && ORVX<0) || (0<ORX && 0<ORVX) THEN ORVX = -ORVX その下にこれを追加 ORX=ORX+ORVX その下に、18行目のSPOFSを移動する。 これて動くと思います。 ※3DSが手元にないので未確認です
0そうだね
プレイ済み
返信[20]
親投稿
ツララ LongIceSword
自分でも間違ってると思うのなら何処が間違っているか当てずっぽうでも「ここだと思います」って書いてみたらいいんじゃないです? 漠然と「違いますよね?」って聞くのが癖になると自力じゃ何も出来なくなっちゃいますよ? 逆に言うと、SOUさんに何か意図があってそう書いているのなら 他人が「それは間違いだ」なんて指摘するのは余計なおせっかいですし SOUさんも他の人のやり方を押し付けされたらどんな気分になります? BlackSoftさんが言われているように考え方をそのままコードにするだけですから 逆にコードをそのまま考え方に復元してみればおかしい部分が分かると思いますよ。
1そうだね
プレイ済み
返信[21]
親投稿
say sayer.exe
おいらならこうする 増分値(orvxとする)を先に設定しておく(ループより上ならどこでもいい) ループ内で orx=orx+orvx orxが0未満、または、384超過したらorvxの符号を反転する ☆orxがどのように変化してるのかを想像してみたら、とても幸せになります
0そうだね
プレイ済み
返信[22]
親投稿
SOU MARIO-LUIGI-0106
反転できました! こんな感じです!
0そうだね
プレイ済み
返信[23]
親投稿
say sayer.exe
おみごと! では、5行目のorvxを3にしてみよう そうすると反転しなくなるんだけど、なぜだかわかるかな? また、それでも反転するようにするにはどうやったらいいかな?
1そうだね
プレイ済み
返信[24]
親投稿
SOU MARIO-LUIGI-0106
「==」じゃダメなんですね。 他のゲーム作ってて気付きました。
1そうだね
プレイ済み