「時間が経過したら移動をして、時間が経過したら移動をする」
っていうのを作ろうとして「es_aim」を使用したのですが、
移動先の座標に到着すると、そのキャラクターがぷるぷる動いてしまいます。
原因は常に「es_aim」を実行しているせいとわかったので、フラグで制御しようと思ったのですが、
フラグでやろうとすると指定していない方向に動いてしまいます・・・
仮にうまくいったとしても「「es_apos」で移動して、特定座標に来たら移動をやめる」っていうのと同じような書き方になるし、
フラグの管理を考えるとなんか違うのかな?って思っています。
うまく使いこなせてないと思うので、アドバイス等ありましたらよろしくお願いいたします。
■仕様
・時間が経過したら移動するを繰り返しおこなう
#include "hspdxfix.as" ;DXライブラリ使用 width ,,130,200 ;ウィンドウの位置 es_ini 2200,2200,360;スプライトの最大数、キャラクタ定義の最大数,周の精度(180*2) es_screen 640,480 ,0,0,1,1 buffer 6 ; picload "reimu.bmp" es_buffer 6,,$00ff00,,1 es_size 27,59, 100 es_pat 1100, 66,61 gsel 0,1 ;■■■■敵■■■ es_set 1100, 208,70, 1100 es_type 1100,4096 ;************メインループ*************** *メイン es_cls es_draw ;*************カウンター**************** es_get TEKI_pos_x,1100,3 ;X es_get TEKI_pos_y,1100,5 ;Y pos 500,50 : es_mes "TEKI_TAIM " + TEKI_TAIM pos 500,70 : es_mes "TEKI_pos_x " + TEKI_pos_x pos 500,90 : es_mes "TEKI_pos_y " + TEKI_pos_y ;******************************** gosub *敵の処理 es_sync ;画面更新 await 16 goto *メイン ;****************敵の処理************* *敵の処理 ;---行動処理--- if TEKI_TAIM <= 800 : TEKI_TAIM++ ;初期位置 ; if TEKI_TAIM <= 99 : es_aim 1100, 208,70 ;→↓に移動(この時点でぷるぷるになる) if TEKI_TAIM >= 100 : es_aim 1100, 315,177 /* ;←↑に移動 if TEKI_TAIM >= 400 : es_aim 1100, 208,70 ;←↓に移動 if TEKI_TAIM >= 600 : es_aim 1100, 102,177 ;→↑に移動 if TEKI_TAIM >= 800 { es_aim 1100, 208,70 if TEKI_pos_x >= 208 { TEKI_TAIM = 0 ;時間を【リセット】 } } */ ;---フラグの場合--- /* ;→↓に移動 if TEKI_f = 0 { if TEKI_TAIM >= 100 { es_aim 1100, 315,177 } } if TEKI_pos_y >= 177 : TEKI_f = 1 ;移動先に到着したらフラグを立てる */ ;---es_aposの場合--- /* ;→↓に移動 if TEKI_TAIM >= 100 { es_apos 1100, 1,1 if TEKI_pos_y >= 177 { ;移動先に到着したら「es_apos」で移動をやめさせる es_apos 1100, 0,0 } } */ return