トピック
かずまっクス yahoozxjjjx

質問

キャラがタッチしたら現れて(したがめん)、そのキャラが自動で決められた場所に歩いていくというのを作りたいです!後、歩くスピードも決めたいです!すごくわかりやすく教えてください。
1そうだね
プレイ済み
返信[1]
親投稿
とりあえず例を載せるのでわからないところを質問してくださいな。
1そうだね
プレイ済み
返信[2]
親投稿
********** itd12d
'画面設定 acls:xscreen 3:display 1 'スプライト宣言 spset 0,0 '無限ループって怖くね? while 1 'タッチ座標の取得 touch out t,x,y '移動済みフラグが0の場合はタッチされた場所へ移動し、移動済みフラグをオンに if f==0&&t then spofs 0,x,y:f=1 '移動済みフラグが1の場合でアニメーションしていない場合はアニメーション[(200,200)へ] if spchk(0)==0&&f==1 then spanim 0,"XY",-60,200,200 '垂直同期 vsync 1 'ループ終わったッ!第3部完ッ! wend
1そうだね
プレイ済み
返信[3]
親投稿
せっかくなのでかるくだけ説明しておきますね。移動させるだけならもっとシンプルですがアニメーションもしてるんでその分複雑になっちゃってます。 11行目でタッチした位置を元にその場所までの移動量(AX,AY)と距離(L)を求めています。この移動量と距離はアニメーションのキャラと速度を求めるために利用しています。この辺の計算は11〜13行目で行っていますが、慣れないとこっちの方がわかりにくく感じるかもしれませんね。 17行目で移動させるときには距離(L)をスピードで割ることで実際の移動時間を求めています。こうしないとどこに移動するにも同じ時間になるので遠くほど早く移動することになっちゃうからです。距離から計算すれば移動速度を正確に出来ます。
0そうだね
プレイ済み
返信[4]
親投稿
22〜24行目はキャラのアニメーションのための処理です。移動自体は移動後止まりますがキャラクタのアニメーションは勝手には止まりません。なのでSPCHKで移動が終わっているかをチェック(移動だけをチェックする為にAND #CHKXYする)して移動が終わっていたらキャラのアニメも止めています。 ちなみにSPUSED(0)がないとSPSET前(初回タッチまでの間)はエラーになってしまうので、ちゃんとSPUSEDが使われているか調べてからSPCHKをするようにしています。 最後にSPANIMを止める方法ですが、SPANIMは他の命令でアニメーションに関係あるパラメータを変更するとアニメの方が止まるという特徴があります。なのでこれをつかって、SPCHRでSPCHR(0)である今現在の自分のキャラ番号を指定することで、絵を変更せずにSPANIMだけを止める(無効に)しています。
0そうだね
プレイ済み
返信[5]
親投稿
かずまっクス yahoozxjjjx
皆さん、ありがとうございました! とても、わかりやすかったです! 本当にありがとうございました。
0そうだね
プレイ済み