Я не очень хорошо разбираюсь в векторной математике, самое близкое, к чему я пришел, это:
sf::Vector2f dir = findObject->m_position - p_object->m_position;
float d = p_object->m_velocity.x * dir.x + p_object->m_velocity.y * dir.y;
if(d > 0) {
// moving towards
}
где p_object
объект движется к другому объекту, findObject
но это, вероятно, не правильно.
Используйте точечное произведение.
bool isMovingTowards(vec2 testPoint, vec2 objectPosition, vec2 objectVelocty) {
vec2 toPoint = testPoint - objectPosition; //a vector going from your obect to the point
return dot(toPoint, objectVelocity) > 0;
}
Я не уверен, знаете ли вы о точечном продукте, но ваш код выполняет математические вычисления, чтобы это сделать. Т.е. код у вас почти правильный, может быть немного понятнее.