@Develoder
Моя игра https://ur-l.ru/sioKg

Как повернуть оружие в сторону курсора?

Мне нужно повернуть объект (руку) в направлении курсора.

Объясню, у меня проект в 3Д пространстве, игрок движется только по оси Z и Y, вот пример:
5e344ebcadf01516420030.png
И как видет игрок:
5e344ed16d62f086493537.png

Теперь к самой проблеме, я уже знаю положение курсора (на рисунке положение курсора показано красным квадратом) но по формуле (rotationX = Mathf.Atan2(difference.y, difference.z) * Mathf.Rad2Deg) вращение руки не правильно считается и это выглядит примерно так:
5e345080a8727327544053.png

А также код:
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));
5e345278a0248803416651.png
  • Вопрос задан
  • 522 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы