使用Cocos2D創建射擊發射子彈地獄風格的遊戲。 一根手指拖動船隻,角落裏有火層。吃一個開始在一層,並防止ccMoved調用(或touchesMoved)的觸摸
從我的主層,我檢測ccTouchesBegan,ccTouchesMoved和ccTouchesEnded。我將一個CGPoint傳遞給我的邏輯控制器。
如果觸摸點位於2個「火災按鈕」圖層之一內,則觸發火災事件。否則,我爲玩家船舶設置了一個新的位置。當觸摸移動到消防層區域外時,我爲玩家船舶設置了新的位置。
問題:由於「觸摸移動設置玩家位置」規則,將手指從發射層內拖入非發射層空間導致船隻跳到該點。
我該如何設計這更好?也許我需要一個「觸摸對象」的數組,並且在穿越消防層的邊界時使它們無效。我覺得我錯過了一些關於觸摸處理的重要概念,如果能夠理解的話,就會給予我想要的控制權,而不必破解一個「觸摸對象」類,它可以比較您點擊哪個位置的位置。
請指教。謝謝!
(是的,我看到:How do I limit touch handling to one layer when layers overlap?。這並不回答我的問題。rectContainsPoint是我如何確定觸摸是在火災層之內還是火之外)。
我正在設置一個BOOL iVar觸摸*而不是*在火災區域,以防止觸摸從翹曲開始,如果您再次點擊「移動」區域。 您的解決方案不起作用,因爲我希望玩家能夠同時移動和射擊。如果我標誌着一個伊娃被擊中,然後我的主要動作手指移動,什麼都不會發生。 (感謝您的快速回復) – quantumpotato
因此,當玩家觸摸到火區並將其拉出時會發生什麼?你是否想讓這個特殊的接觸被忽略,同時還允許進一步的接觸來移動這艘船? (我確實說過我錯過了一些東西 - 多點觸摸?) – jrturton
是的 - 正好! 我在這裏問了一個這個問題的簡單版本: http://stackoverflow.com/questions/8543473/ignoring-touchesmoved-for-subsequent-touches-while-counting-touchesbegan-total其實..它可能會更困難因爲沒有多個圖層。 (我會標記,如果有一個普遍的答案) – quantumpotato