Код написан на C #, и я хочу перетащить любой объект в Unity 3D с помощью мыши. Я перепробовал много вещей, но не нашел разумного решения - PullRequest
0 голосов
/ 10 ноября 2018
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Drag: MonoBehaviour
{
    GameObject getTarget;
    bool isMouseDragging;

    Vector3 offsetValue;
    Vector3 positionOfScreen;

    void Start()
    {
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
           RaycastHit hitInfo;
           getTarget = ReturnClickedObject(out hitInfo);

           if (getTarget != null)
           {
               isMouseDragging = true;
               //Converting world position to screen position.
               positionOfScreen = Camera.main.WorldToScreenPoint 
                              (getTarget.transform.position);
               offsetValue = getTarget.transform.position - Camera.main.Screen 
                         ToWorldPoint(new Vector3(Input.mousePosition.x,   
                         Input.mousePosition.y, positionOfScreen.z));
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
             isMouseDragging = false;
        }

        if (isMouseDragging)
        {
              Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x Input.mousePosition.y, positionOfScreen.z);
              Vector3 currentPosition = Camera.main.ScreenToWorldPoint (currentScreenSpace) + offsetValue;
              getTarget.transform.position = currentPosition;
        }
   }

   GameObject ReturnClickedObject(out RaycastHit hit)
   {
       GameObject target = null;
       Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
       if (Physics.Raycast(ray.origin, ray.direction * 10, out hit))
       {
        target = hit.collider.gameObject;
       }
       return target;
      }

}

код о единстве 3D ... я хочу перетащить любой 3D-объект (куб, сфера и т. Д.) С помощью мыши ... я создаю объект из иерархии и применяю скрипт к тому объекту, который мне нуженперетаскивать ..... когда я запускаю, что объект не выбран и не перетаскивается ........... я проверил много сайтов, но не нашел никакого разумного решения.

1 Ответ

0 голосов
/ 11 ноября 2018

Если я правильно понял вопрос, IDragHandler от Unity может решить вашу проблему.

Этот интерфейс может использоваться для получения DragEvent. Для этого вы должны реализовать в своем классе метод void OnDrag (PointerEventData data). Чтобы ответить на начало события OnDrag, вы можете реализовать интерфейс IDragStart, используя метод void OnBeginDrag(PointerEventData eventData). В конце вы также можете реагировать с интерфейсом IDragEnd и методом void OnEndDrag(PointerEventData eventDat).

Точное использование IDragHandler вы можете найти в документации Unity. Вот ссылка:

Интерфейс IDragHandler в UnityEngine.EventSystems

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...