歩いている途中に locate すると位置が戻るバグ

歩いている途中に locate すると位置が戻るバグ

結構前に解決したバグだったが、リンク切れになっていたのでページを作り直した teramotodaiki

walk メソッドは毎フレームずつ x, y を変更していくように実装されている
locate すると絶対位置でキャラクターの位置が変更されるので、そのままにしておくと x, y の値がズレていく
locate されたあとは x, y, frame をそれ以上変更しないようにする必要がある
厳密にいうと、この問題には 3 つの解決のアプローチがある
locate の瞬間に x, y を設定してからそのあと動かさないようにする
locate の瞬間に x, y よりも少し手前 (歩いている方向を先と見て) にして、歩き終わったときに帳尻を合わせる
walk 中の locate は一旦キューイングして、idle に戻った時に x, y を設定する
x, y が代入によって設定できる場合、 x = 1; x++ というコードを実行したあと、 x は 2 でなければならない
方法 2, 3 ではどちらもその条件を満たせないため、方法 1 を採用している

現在の実装方法では this.behavior = 'idle' としているが、これが上手くいくかどうかはわからない
_skipWalkingAfterLocate フラグに変更した
Powered by Helpfeel