コード:
次のような機能があります。
bool Action::approach (img_comp &mover, sf::Vector2f start, sf::Vector2f end, int speed)
{
//Get the change in x and y
float delta_x = (end.x - start.x) / speed;
float delta_y = (end.y - start.y) / speed;
//Move the sprite
mover.sprite.move(delta_x, delta_y);
//Check if the sprite has met the end
if (mover.sprite.getPosition() == end)
return true;
return false;
}
(基本的には、float パラメーターsf::Vector2f
を持つ構造体です。たとえば、xy グリッド上のポイント)x
y
質問:
当然のことながら、この関数は、 の丸めにより、終点を通過した後に true を返さない可能性がありfloat
ます。end
丸めに関係なく、スプライトを正確にポイントに着陸させるために、このシナリオでどのアルゴリズムを使用しますか?
注: 許容範囲は私の質問に対する回答ではありません。それは単なる妥協です。丸めに関係なく、最初から完全にポイントを選択するアルゴリズムが必要です。これが不可能な場合は、お知らせください。