D3DXVECTOR3
s のベクトルを取り込んで AI を各ポイントに移動する、非常に単純な移動アルゴリズムに取り組んでいます。問題は、複数のポイントを渡すと、AI がポイントの平均に等しいポイントでスタックするように見えることです。
ポイントは (x, z):
10, 10
10, 20
30, 30
60, 20
maxSpeed は、テストのためだけに 10 です。
void Obj::MoveToLocation(D3DXVECTOR3 newLocation, float deltaTime)
{
D3DXVECTOR3 directionToTarget = newLocation - location;
D3DXVec3Normalize(&directionToTarget, &directionToTarget);
location += maxSpeed * directionToTarget * deltaTime;
}
void Obj::Patrol(std::vector<D3DXVECTOR3> locations, float deltaTime)
{
hasArrived = false;
for (int i = 0; i < locations.size(); ++i)
{
if (!hasArrived)
MoveToLocation(locations[i], deltaTime);
if ((location.x <= locations[i].x + radius.x) && (location.x >= locations[i].x - radius.x) &&
(location.z <= locations[i].z + radius.z) && (location.z >= locations[i].z - radius.z))
{
hasArrived = true;
}
}
}
これを機能させる方法についてのヒントを探しています。これは非常に単純な問題のように思えますが、今は途方に暮れています。