我正在撕裂我的頭髮,試圖弄清楚什麼似乎是一個非常簡單的問題。我知道很多這些東西都被切成線索討論過,所以如果這個問題在覆蓋面很大的情況下表示道歉,但我找不到任何與我的解決方案相關的任何東西(相信我,我已經看過)。iOS - 沿彎曲路徑拖動對象
基本上我想沿着預先定義的彎曲路徑(不只是移動它,但拖動它)拖動一個對象/精靈。想想iPhone的「滑動解鎖」的東西,但不是從左到右拖動滑塊,而是將路徑設爲弧線或波浪線。
我的基本思路是:
- 定義貝塞爾路徑,設置對象的起點。
- 如果對象被觸摸,請檢查touchesMoved(或某些類似功能)中bezier路徑上的命中檢測。如果觸摸停留在路徑上,沿着路徑推進精靈直到路徑結束(在這種情況下,任務完成)或用戶的手指離開路徑(在這種情況下,對象應該返回到開始處)。
這一切都不重要(至少,這是它的樣子)。例如:
- 在Bezier路徑上執行命中檢測是一個皇家痛苦,因爲您實際上需要在描邊部分而不是填充部分執行命中檢測。即使如此,我似乎也無法找到一種方法在任何寬度的路徑上進行 - 只有在Bezier的1點寬路徑上。
- 部分沿着路徑移動對象似乎是不可能的:所有的動畫方法都沿着整個路徑移動精靈。此外,這樣做需要您找到距離用戶觸摸最近的路徑上的點,如果您曾經查看過該點,則會涉及驚人的複雜數學。
- 我想過使用剛體佔據除路徑之外的所有空間,所以對象只能在路徑中移動。但是,這需要定義彎曲的剛體,其中一些必須是凹形的。死路。
我是不是在做這個太難?這似乎並不複雜。我不需要一個完整的解決方案,只是一種思考這個問題並朝正確方向發展的新方法。任何幫助將非常感激。
我知道很久以前就有人問到這個問題,但我現在遇到了一些非常相似的東西,並且想知道你是否想到了這個並可能能夠幫助指引我走下正確的道路。 – gikygik 2015-04-29 16:31:21