【发布时间】:2018-08-16 17:05:15
【问题描述】:
注意:请务必阅读让我们在聊天中继续讨论以获取背景说明
我在这里看到了一些帖子和教程,用于检查控件是否重叠,但是在动画期间检查这一点的最佳方法是什么?
我正在制作一个模拟软件,其中涉及让一些 UIElement 沿路径设置动画。目前我有 20 个项目遵循这条路径,并且运行良好。
为此,我只创建了一个 20 的循环,在循环内,我正在创建 UIElement、情节提要等,然后开始。我等待大约 100 毫秒然后重复。这在元素之间提供了一个很好的间隙。
无论如何,以上内容都可以正常工作。现在下一点。在 sim 的任何位置,UIElement 都可以停止在它所在的位置。现在,当这种情况发生时,我希望其他 UIElement 继续运行,直到它们碰到停止的元素,并且它们 1 接 1 堆积在它后面。
所以知道如何检查重叠/相交/碰撞,我如何在元素动画期间进行检查。
【问题讨论】:
-
“这仅仅是创建一个计时器的简单案例,它每隔 100 毫秒就响一次,然后循环所有 UI 元素以查看它们是否重叠?” - 也许。你试过吗?有什么代码可以显示吗? How to Ask。祝你好运
-
@MickyD 不,我现在正在尝试。但即使它有效,我也试图了解什么是最好的方法。如果计时器是最好的方法,那么有人可以说是的,这是唯一的方法,这很好,但其他人可能会说“不,你不想这样做,因为准确性会很差,你应该这样做”。
-
当我认为超出动画范围的元素停止时,您需要检查所有移动元素是否发生碰撞。
-
@MickyD 我不认为要求最好的方法一定是题外话。问一个完全基于意见的问题是。
-
@MickyD,单独的碰撞检测是一个重复的问题,而不断移动的物体的碰撞检测似乎是一个重复,需要更多说明。在问了 OP 几个问题之后,我的问题变得非常清楚。对于像我这样的 Unity 开发人员来说,这是一件很常见的事情,并且没有直接的解决方案,只有提示和技巧。如果 OP 想要一个复杂形状的元素,他会立即提出要求,但我们确实认为它是一个简单的形状。我个人认为问题和答案可以帮助未来的读者。