Мне нужно повернуть объект (руку) в направлении курсора.
Объясню, у меня проект в 3Д пространстве, игрок движется только по оси Z и Y, вот пример:
И как видет игрок:
Теперь к самой проблеме, я уже знаю положение курсора (на рисунке положение курсора показано красным квадратом) но по формуле (rotationX = Mathf.Atan2(difference.y, difference.z) * Mathf.Rad2Deg) вращение руки не правильно считается и это выглядит примерно так:
А также код:
using UnityEngine;
public class HandController : MonoBehaviour
{
public Vector3 cursor; // Положение курсора
public Vector3 difference;
public float rotationX; // Вращение объекта
[SerializeField] GameObject game; // Объект курсора
void Update()
{
cursor = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.transform.position.y));
game.transform.position = cursor;
difference = cursor - transform.position;
rotationX = Mathf.Atan2(difference.y, difference.z) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(rotationX, 0f, 0f);
}
}
Подскажите как правильно в моем случаи найти вращение "руки", через LookAt тоже не получается, вот пример:
формула - transform.LookAt(new Vector3(transform.position.x, cursor.y, cursor.z));