Перетаскивание объекта в 3D Unity

Рейтинг: 1Ответов: 1Опубликовано: 10.07.2023

Мне нужно перетащить куб относительно поворота камеры, например, как на этой демонстрации, или как в blender при нажатии кнопки gДемонстрация

Ответы

▲ 0Принят

Вы можете использовать Camera.ScreenToWorldPoint предварительно сохранив расстояние до объекта перед началом перетаскивания:

using UnityEngine;

public class mover : MonoBehaviour
{
    [SerializeField] private Transform obj;

    private Camera cam;

    private Vector2 mousePos;
    private Vector3 point;

    private float distance;


    void Start()
    {
        cam = Camera.main;
        distance = Vector3.Distance(cam.transform.position, obj.position);
    }

    void Update()
    {
        mousePos = Input.mousePosition;

        point = cam.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, distance));

        obj.position = point;
    }
}