【问题标题】:Unity drag and drop check right or left (2D)unity拖放检查左右(2D)
【发布时间】:2020-09-25 12:29:58
【问题描述】:

我想在 Unity 中构建一个纸牌游戏。 我想玩家向左或向右滑动卡片,但我想展示一些关于如果他们向左或向右滑动会发生什么的技巧,所以如果他们抓住卡片(2D 图像)并向左或向右移动,图像上会出现文本取决于边。 我尝试使用滑动和使用 X 轴更改,但它无法正常工作。

这是关于我想要构建的基本图片信息:

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我建议统一使用拖动处理程序系统来跟踪卡片的起始位置,并在距其原点的不同距离/方向触发不同的效果。

    您可以通过在卡片对象上的脚本上实现 IBeginDragHandlerIDragHandlerIEndDragHandler 来检测卡片的拖动。

    Begin 在对象开始拖动时调用,Drag 在每帧移动时调用,End 在对象移动时调用掉了。

    当开始拖动时,您可以缓存卡片开始的位置。然后在每帧拖动处理程序中,您可以检查卡片与开始位置的距离。一旦它移动超过一定距离,您就可以触发您想要展示的任何技巧或效果。

    根据您的坐标空间的设置方式,您可以例如在拖动更新期间从左到右了解:

    // Inside of your on drag method, check each frame for where the card is
    // If it has moved far enough, trigger an effect
    if (Vector3.Distance(dragStartPosition, transfom.position) > yourTriggerDistance) {
        // if X is greater, the card moved right
        if (transform.position.x > dragStartPosition.x) {
            // Trigger Right swipe text
            ShowSomeRightSwipeText();
        }
        // otherwise, X is smaller, so the card has moved left by the required distance
        else {
            // Trigger left swipe text
            ShowSomeLeftSwipeText();
        }
    }
    

    另外请记住:

    • 为了使这些界面正常工作,您需要将 Physics 2D Raycaster 连接到场景中的相机。
    • 您需要确保场景中也有一个事件系统

    以上两件事在这里经常被问到关于检测物体拖动的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多