Unity: как переместить объект в положение мыши — объяснение 5 методов

Чтобы переместить объект в позицию мыши в Unity, вы можете использовать несколько методов. Вот несколько подходов:

Метод 1: использование ScreenToWorldPoint

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = 10; // Set the distance from the camera to the object
        Vector3 worldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
        transform.position = worldPosition;
    }
}

Метод 2: использование Raycasting

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            transform.position = hit.point;
        }
    }
}

Метод 3: использование MousePosition

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = 10; // Set the distance from the camera to the object
        Vector3 worldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
        transform.position = worldPosition;
    }
}

Метод 4. Использование MouseDelta

void Update()
{
    if (Input.GetMouseButton(0))
    {
        Vector3 mouseDelta = new Vector3(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"), 0);
        transform.position += mouseDelta;
    }
}

Метод 5. Использование системы событий

using UnityEngine.EventSystems;
void Update()
{
    if (Input.GetMouseButton(0) && !EventSystem.current.IsPointerOverGameObject())
    {
        Vector3 mousePosition = Input.mousePosition;
        mousePosition.z = 10; // Set the distance from the camera to the object
        Vector3 worldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
        transform.position = worldPosition;
    }
}