トピック
STiNGER STiNGER8901

SPANIMの発動のタイミング

コールバックで、y=20まで移動したらSPANIM発動という処理がどうしても出来ません。 簡単なことじゃないかと思うのだけど・・・?!
2そうだね
プレイ済み
返信[1]
親投稿
say sayer.exe
18行目のspofsがいたづらしてる? 17:if y>20 && !spchk(n) then spanim n,8,"@move",0 else spofs n,x,y こうしたら動きました
4そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
SPANIMEでアニメ対象をXY座標で指定した後にSPOFS命令で XY座標の指定を行うとアニメの設定は無効になってしまいますね。 SPCHKの返り値もFALSEになります。 アニメ対象がXY座標以外ならSPOFS命令でXY座標の指定を しても影響は無いようです。
3そうだね
プレイ済み
返信[3]
親投稿
みむ*mim hidemimtp
原因は↑の皆様のおしゃる通りだと思います。 私が自分で組むときは動き別にサブルーチンを分けます。 このプログラムの場合だとSPOFSは17行目の上に移動させて、SPANIMしたらその後はSPFUNCの設定内容を消す・・・としたい所ですがSPFUNCにはキャンセル機能がないので、 ~ THEN SPANIM ~:SPFUNC N,"OBJ_DUMMY" とでもして、 DEF OBJ_DUMMY:END ってします。 この場合だけ見ると無駄な処理かもしれませんが、複雑になってくると条件でSPFUNCの飛び先を変えるというのはけっこう便利です。 倒したら爆破アニメをしてから消す(SPCLR)、とかに。
4そうだね
プレイ済み
返信[4]
親投稿
みんなも指摘されているようにSPOFSで位置を指定することでSPANIMがキャンセルされてしまってるのが原因ですね。 このようにSPANIM系は、そのアニメ対象の要素に対しての命令を使う事で上書き(キャンセル)されますが、逆にそれを利用してSPANIMでの動作を止めることも出来ます。SPANIMを止めるにはSPSTOPという命令もありますが、それだとそのスプライトで指定した全てのアニメーションが止まってしまうのと、再度動かしたい時にはSPSTARTをしないといけないこともあるので、僕は途中キャンセルしたい場合は、動作の上書きでの停止がいいんじゃないかと思っています。 とくに僕はキャラクタ変更(I要素)のアニメーションを止めるのに、SPCHRでの上書きを使いますね。
1そうだね
プレイ済み
返信[5]
親投稿
STiNGER STiNGER8901
皆さま、アドバイスありがとうございます。 いろいろ試して見ましたがなかなか思わしい結果が出ず・・・もうしばらく研究してみます。
0そうだね
プレイ済み