繁体   English   中英

如何在unity3D中拖动对象?

[英]How to Drag Objects in unity3D?

我是团结的新手。 我正在开发类似Android设备游戏的蛋糕机。 我在将对象从机柜拖动到桌子时遇到了困难。 在桌上,我想将它们混合在一个罐子里。 这些是很多东西。 因此,我无法通过使用统一标签将它们分开来做到这一点。 如何制作将它们拖到桌子上的通用方法?

我正在使用此代码,但不适用于我。

   using UnityEngine;
   using System.Collections;

   public class DragObjects : MonoBehaviour {

    Ray ray;
    RaycastHit hit;

    // Use this for initialization
    void Start ()
    {
    }

    // Update is called once per frame
    void Update ()
    {

        if (Input.GetMouseButtonDown(0))
        {
            ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            if (Physics.Raycast (ray, out hit))
            {
                if (hit.collider.tag == "oil")
                {
                    OnMouseDrag();
                }
            }
        }

    }


void OnMouseDrag()

  {

    Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition);


    point.x = gameObject.transform.position.x;

    gameObject.transform.position = point;
  }


}

Unity进行此操作的方式将是具有Draggable行为,并将其附加到要拖动的每个对象。

如果您使用的是2D对撞机,则可以使用以下方法:

Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
bool isOver = collider2D.OverlapPoint(pos);

使用3D对撞机,您可以从相机中获取光线,并查看其是否与可拖动对象相交。

然后,您可以使用其他对撞机检测它们何时放置在罐子上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM