我正在撕裂我的头发,试图弄清楚什么似乎是一个非常简单的问题。我知道很多这些东西都被切成线索讨论过,所以如果这个问题在覆盖面很大的情况下表示道歉,但我找不到任何与我的解决方案相关的任何东西(相信我,我已经看过)。iOS - 沿弯曲路径拖动对象
基本上我想沿着预先定义的弯曲路径(不只是移动它,但拖动它)拖动一个对象/精灵。想想iPhone的“滑动解锁”的东西,但不是从左到右拖动滑块,而是将路径设为弧线或波浪线。
我的基本思路是:
- 定义贝塞尔路径,设置对象的起点。
- 如果对象被触摸,请检查touchesMoved(或某些类似功能)中bezier路径上的命中检测。如果触摸停留在路径上,沿着路径推进精灵直到路径结束(在这种情况下,任务完成)或用户的手指离开路径(在这种情况下,对象应该返回到开始处)。
这一切都不重要(至少,这是它的样子)。例如:
- 在Bezier路径上执行命中检测是一个皇家痛苦,因为您实际上需要在描边部分而不是填充部分执行命中检测。即使如此,我似乎也无法找到一种方法在任何宽度的路径上进行 - 只有在Bezier的1点宽路径上。
- 部分沿着路径移动对象似乎是不可能的:所有的动画方法都沿着整个路径移动精灵。此外,这样做需要您找到距离用户触摸最近的路径上的点,如果您曾经查看过该点,则会涉及惊人的复杂数学。
- 我想过使用刚体占据除路径之外的所有空间,所以对象只能在路径中移动。但是,这需要定义弯曲的刚体,其中一些必须是凹形的。死路。
我是不是在做这个太难?这似乎并不复杂。我不需要一个完整的解决方案,只是一种思考这个问题并朝正确方向发展的新方法。任何帮助将非常感激。
我知道很久以前就有人问到这个问题,但我现在遇到了一些非常相似的东西,并且想知道你是否想到了这个并可能能够帮助指引我走下正确的道路。 – gikygik 2015-04-29 16:31:21