Girar el object para enfrentar al jugador

Esta es probablemente una simple pregunta de vector, pero no estoy seguro de cómo hacerlo.

Tengo un object en la position del vector (ox,oy) . Potencialmente cada actualización, el usuario camina alnetworkingedor de la pantalla, y estará en la position (px,py) en cualquier momento dado. ¿Cómo lo hago para que el object esté siempre frente al jugador? Necesito get el ángulo en grados.

Esto es con lo que me he estado metiendo, pero la dirección no indica dónde se encuentra el usuario. En cambio, aumenta lentamente en la dirección en que el usuario está caminando.

  objVec.Normalize(); playerVec.Normalize(); obj.Rotation = MathHelper.ToDegrees((float)Math.Acos(Vector2.Dot(objVec, playerVec))); 

Puede que lo esté haciendo completamente mal, ¡así que cualquier ayuda es apreciada!

Piense en el problema de manera diferente. Desea objetar siempre para "enfrentar" al jugador, lo que significa que desea que su vector "hacia adelante" gire para ser paralelo al vector de sí mismo al jugador. Suponiendo que su vector "adelante" normalmente está en obj.Rotation = 0 , la rotation correcta es básicamente el arcotangente de Vector2.Subtract(playerPos, objectPos) . La mayoría de las bibliotecas matemáticas tendrán algo como atan2 que toma dos arguments o un Vector2 que automáticamente calculará el cuadrante correcto para usted.

EDIT: me di count de que estás en C # y estas son classs integradas. Para que no tenga que search documentation de la biblioteca matemática, puedo hacerlo por usted. El código correcto debería ser:

 Vector2 facingVec = playerVec - objVec; obj.Rotation = MathHelper.ToDegrees((float)Math.Atan2(facingVec.Y, facingVec.X)); 

Tenga en count la inversión X / Y; para las pasas histéricas, Atan2 siempre tiene los arguments invertidos.