Чтобы переместить объект в позицию мыши в 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;
}
}