Cocos2D を使用して、シューティング ゲームの弾幕スタイルのゲームを作成します。1 本の指でドラッグして船を動かし、隅に火の層があります。
メイン層から、ccTouchesBegan、ccTouchesMoved、および ccTouchesEnded を検出します。CGPoint をロジック コントローラーに渡します。
タッチ ダウン ポイントが 2 つの「発射ボタン」レイヤーのいずれかの内側にある場合は、発射イベントをトリガーします。それ以外の場合は、プレイヤー船の新しい場所を設定します. タッチが火層エリアの外に移動すると、プレイヤーの船に新しい場所を設定します。
問題: Fire レイヤー内から非 Fire レイヤー スペースに指をドラッグすると、「タッチ ムーブ セット プレーヤーの位置」ルールにより、船がそのポイントにジャンプします。
どうすればこれをより適切に設計できますか?
おそらく、「タッチオブジェクト」の配列が必要であり、火のレイヤーの境界を越えるときにそれらを無効にします。ここで、タップしている場所を場所の配列と比較する「タッチオブジェクト」クラスをハックすることなく、理解すれば必要なコントロールを提供するタッチ処理に関する重要な概念が欠けているように感じます。
お知らせ下さい。ありがとう!
(はい、見ました:レイヤーが重なっているときにタッチ処理を 1 つのレイヤーに制限するにはどうすればよいですか?。それは私の質問には答えません。rectContainsPoint は、タッチが火のレイヤー内にあるか外にあるかを判断する方法です)。