目前,我正在用純UIKit構建遊戲。這是一個角色捕捉墜落物品的遊戲。所有物體都沿着三點軌跡運動:每個物體出現在A點,然後移動到B點,然後落到C點。對我來說,重要的只有一個時刻 - B點的物品。我需要檢查,該角色是否抓住了B點的物品。目前,我在主遊戲控制器中有一個定時器,它不斷髮布通知。遊戲物品是觀察者,他們傾聽該通知並重新定位自己(他們自己移動)。現在,通過這個計時器,每個物品都從A點移動到B點。當它位於B點時,物品方法會檢查,角色是否抓住了他。如果沒有,那麼我正在執行從點B到點C的持續時間的UIView動畫。UIKit遊戲:遊戲對象移動動畫中的中間回調
我在想整個運動可能是動畫的,可能是Core Animation CAKeyframeAnimation類或者是smth。唯一的問題是,我不知道如何觸發回調來檢查動畫中間的抓點 - 在B點。有人說這是不可能的here,如果我有整個動畫,我需要得到當前項目的位置,那麼我需要一個定時器,定期從presentationLayer中拉取/讀取模型數據。但我不確定這種方法,因爲現在,我不存儲指針來屏幕我的主遊戲控制器中的項目 - 遊戲控制器只創建一個項目,遊戲定時器向這些對象發佈通知。但爲了實施提議的解決方案,我需要有這樣的一個。另外,我應該從整個屏幕項目中閱讀presentationLayer。
另一種選擇是將一個動畫分成兩個動畫:首先,從A動畫到B,然後觸發完成回調以檢查捕捉。然後,執行從B到C的另一個動畫。
夥計們,你對此有何看法,也許你有另外一個建議?
感謝分享信息。我無法找到比寫有問題的解決方案更好的解決方案,只是完成併成功將遊戲上傳到應用商店。就像暫停遊戲一樣,我也有暫停的頭痛:如果用戶暫停遊戲並且有物品已經從B到C(它們用UIView animateWithDuration動畫),那麼我仍然讓他們完成他們的動畫,甚至一位用戶暫停了一場比賽,儘管我用50%不透明黑色面具淡化了所有遊戲畫面。 – Centurion