首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UI上拖放

在UI上拖放
EN

Stack Overflow用户
提问于 2016-07-11 17:31:33
回答 0查看 864关注 0票数 0

我想使用Unity UI对象创建一个简单的拖放游戏。

我现在的对象是带有脚本的图像。我的脚本使用了OnBeginDragOnDragOnEndDrag事件,当我想要移动图像对象时,它们工作得很好。

然而,图像对象始终是方形的,我希望仅当鼠标位于指定区域时才检测拖动。因此,我在我的图像上创建了一个多边形对撞机2D,并将其调整为我想要的形状。不幸的是,我根本不能让它工作。

代码语言:javascript
运行
复制
public void OnBeginDrag(PointerEventData eventData)
{
    var canvas = FindInParents<Canvas>(gameObject);

    itemBeingDragged = gameObject;
    m_DraggingPlane = canvas.transform as RectTransform;
}

public void OnDrag(PointerEventData eventData)
{
    SetDraggedPosition(eventData);
}

public void OnEndDrag(PointerEventData eventData)
{
    itemBeingDragged = null;
    int i = 0;
    foreach (Vector3 hex in otherHexes)
    {
        Vector3 rayBeginning = hex + transform.position;
        rays = Physics2D.RaycastAll(rayBeginning, Vector2.zero);


        if (rays.Length > 1)                                                                                //if there are other elements in RayCast
        {
            foreach (RaycastHit2D ray in rays)
            {
                if (ray.transform.gameObject != gameObject && ray.transform.tag == "Hex")                    //if element is not self and is a HexGrid
                {
                    SuccessfulDrag(ray, i);
                }
                else if (ray.transform.gameObject != gameObject && ray.transform.tag == "GetOut")            //if element is not self and is another puzzle
                {
                    FailedDrag();
                    break;
                }
            }
        }
        else if (rays.Length == 1 && rays[0].transform.gameObject == gameObject)                             //if there is only one element and it's self
        {
            FailedDrag();
            break;
        }
        i++;
    }
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38303550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档