Я некоторое время искал, но не мог понять, как решить эту неприятную ошибку. Я использую вид сверху вниз (указывая на -z), в основном 2d с трехмерными объектами и камерой в режиме перспективы.
Мне нужно ориентировать объект на мышь, игнорируя аспект z, так как все движется в одной плоскости.
Я использую следующий код:
Vector3 mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 1f));
mouseToWorld.z = 0f;
Vector3 difference = mouseToWorld - transform.position;
difference.Normalize();
float angle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, angle - 90);
К сожалению, он работает только тогда, когда объект неподвижен, и прерывается, как только скорость становится> 0;
Любая подсказка будет оценена :)
p.s. Я добавляю 1 к z, а затем сбрасываю его, потому что в противном случае mouseToWorld постоянно равен 0, куда бы я ни перемещал указатель.