【发布时间】:2020-09-25 12:29:58
【问题描述】:
我想在 Unity 中构建一个纸牌游戏。 我想玩家向左或向右滑动卡片,但我想展示一些关于如果他们向左或向右滑动会发生什么的技巧,所以如果他们抓住卡片(2D 图像)并向左或向右移动,图像上会出现文本取决于边。 我尝试使用滑动和使用 X 轴更改,但它无法正常工作。
这是关于我想要构建的基本图片信息:
【问题讨论】:
我想在 Unity 中构建一个纸牌游戏。 我想玩家向左或向右滑动卡片,但我想展示一些关于如果他们向左或向右滑动会发生什么的技巧,所以如果他们抓住卡片(2D 图像)并向左或向右移动,图像上会出现文本取决于边。 我尝试使用滑动和使用 X 轴更改,但它无法正常工作。
这是关于我想要构建的基本图片信息:
【问题讨论】:
我建议统一使用拖动处理程序系统来跟踪卡片的起始位置,并在距其原点的不同距离/方向触发不同的效果。
您可以通过在卡片对象上的脚本上实现 IBeginDragHandler、IDragHandler、IEndDragHandler 来检测卡片的拖动。
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();
}
}
另外请记住:
以上两件事在这里经常被问到关于检测物体拖动的问题。
【讨论】: