このようなパスは、相対座標を持つ一連の線分としてエンコードできます。次のようなパスが必要だとします。
|
\ _
各線は10ピクセルです。これを線分のjavascript配列としてエンコードできます(そのセグメントをトラバースするのにかかる秒数またはミリ秒数を示す期間を使用)。
[
{"start_x":0,"start_y":0,"stop_x":0,"stop_y":10,"duration":2},
{"start_x":0,"start_y":10,"stop_x":10,"stop_y":20,"duration":3},
{"start_x":10,"start_y":20,"stop_x":20,"stop_y":20,"duration":2}
]
次に、時間の見積もりを使用して、セグメントの開始と終了の間の中間点を見つけます。現在のオフセットは次のようになります。
var pct_complete = elapsed_time / line_segment.duration,
x_diff = (line_segment.stop_x - line_segment.start_x),
y_diff = (line_segment.stop_y - line_segment.start_y),
render_x = line_segment.start_x + (x_diff * pct_complete),
render_y = line_segment.start_y + (y_diff * pct_complete);
ここで、lapsed_timeは、セグメントを開始してからの時間です。前述したように、相対座標を使用すると、ワールド内のパスの位置と画面のオフセットに合わせてrender_x/yを調整する必要があります。
よりスムーズなターンには、より小さな線分を使用してください。