首页 > 解决方案 > 如何将 2D UI 图像拖放到 3D 游戏对象上,然后在我们放置 2D UI 图像的位置实例化 3D 游戏对象?

问题描述

我的场景中有一个立方体,所以我想要将扳手工具的 2d UI 图像拖放到立方体上,一旦我将该图像放到 3d 立方体上,扳手预制件就必须在那里实例化。

这是一张显示我需要的图片

在立方体上拖放

我正在使用下面的代码在场景中拖动我的 UI 图像,但不知道如何将其放在 3D Cube 上并实例化扳手预制件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class wrench : MonoBehaviour {


    public bool Dragging = false;
    public bool collision = false;
    Vector3 position;

    // Use this for initialization
    void Start () {

    }

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

    }

    public void BeginDrag(){
        position = gameObject.transform.position;
        Dragging = true;
    }

    public void Drag(){    
        transform.position = Input.mousePosition;
    }

    public void Drop(){
        if (!collision) {
            gameObject.transform.position = position;
        }
        Dragging = false;
    }
}

标签: user-interfaceunity3ddrag-and-drop

解决方案


通常在堆栈溢出时,您应该添加一些有关您所做操作的信息并显示一些代码,以便我们可以帮助找出您的方法中的问题。人们不会在不知道您的项目当前是什么样子的情况下为您编写所有代码。

话虽如此,如果您还没有任何东西要展示,只是想知道从哪里开始,这里有一个想法:

您可以获取鼠标在世界中的位置,并从中射出一条射线。然后检查此射线是否击中物体。像这样:

if (Input.GetMouseButtonUp(0))
{
    ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if (Physics.Raycast(ray, out hit))
    {
        Debug.Log(hit); // Find a way to figure out what object you hit
    }
}

推荐阅读