Следующая инструкция для перетаскивания трехмерного объекта, но не работает - PullRequest
0 голосов
/ 20 сентября 2018

Привет, поэтому я следовал всем инструкциям из видео на YouTube (https://m.youtube.com/watch?v=NMt6Ibxa_XQ), но в игровом режиме я все еще не могу перетащить свой куб, куб просто остается неподвижным, когда я нажимаю и перетаскиваю его. Эта проблема действительно далау меня болит голова, я почти уверен, что следил за каждой деталью из видео и повторял ее снова и снова, спасибо за ваше время и помощь, я действительно ценю и нуждаюсь в этом, спасибо

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

используйте этот скрипт для перетаскивания трехмерных объектов:

using UnityEngine;
using System.Collections;

public class DragAndDrop : MonoBehaviour
{  
    private bool _mouseState;
    private GameObject target;
    public Vector3 screenSpace;
    public Vector3 offset;

    // Use this for initialization
    void Start ()
    {

    }

    // Update is called once per frame
    void Update ()
    {
        // Debug.Log(_mouseState);
        if (Input.GetMouseButtonDown (0)) {

            RaycastHit hitInfo;
            target = GetClickedObject (out hitInfo);
            if (target != null) {
                _mouseState = true;
                screenSpace = Camera.main.WorldToScreenPoint (target.transform.position);
                offset = target.transform.position - Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));
            }
        }
        if (Input.GetMouseButtonUp (0)) {
            _mouseState = false;
        }
        if (_mouseState) {
            //keep track of the mouse position
            var curScreenSpace = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);

            //convert the screen mouse position to world point and adjust with offset
            var curPosition = Camera.main.ScreenToWorldPoint (curScreenSpace) + offset;

            //update the position of the object in the world
            target.transform.position = curPosition;
        }
    }


    GameObject GetClickedObject (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;
    }
}
0 голосов
/ 20 сентября 2018

для того, чтобы ваш куб принял событие OnMouseDown(), вам нужно добавить collider и rigidbody.щелкните куб, перейдите к свойствам справа и нажмите add component - physics - cube collider, затем сделайте то же самое для твердого тела add component - physics - rigid body.

. Не забудьте установить rigidbody на kinematic или установитьgravity scale до 0, если вы не хотите, чтобы он выпал из сцены

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