cocos2d-x アプリケーションを作成しています。その上にいくつかの子スプライトがあるスプライトがあります。これらのスプライトは、オブジェクト全体として変換される画面上の 1 つの論理オブジェクトを表します。ここで、オブジェクトがタッチされたときに、どの子スプライトがタッチされたかを検出する必要があります。
問題は、親スプライトが現在のようにすべての情報 (バウンディング ボックス、スケール、回転など) を提供する一方で、子スプライトは親と一緒に変換されているにもかかわらず、元の番号のままであり、私には理解できないことです。子の「実際の」寸法を計算する正しい方法。
私には、2 つの事実がすべての問題を引き起こしているように見えます。
- 子境界ボックスには、親の初期境界ボックスに関連して報告される初期寸法があります。
- 親が回転した後、親の初期バウンディング ボックスを計算できません (下の図を参照)。そのため、子の変換の関係点として必要な親スプライトの左下隅がどこにあるかを計算できません。
このような状況を図にすると、次のようになります。
要約すると、タッチが子スプライトに当たったかどうかを確認するには、親の変換に基づいて、子の現在のバウンディング ボックスを計算する必要があります。子のスケーリングと回転を計算できますが、親のバウンディング ボックスが最初とは大きく異なるため、親に対してどこに配置する必要があるかわかりません。奇妙なアンカー ポイントをストーリーに追加すると、さらに複雑になります。完璧な解決策は、バウンディング ボックスではなく、元のスプライトの頂点を取得することです。出来ますか?
何か案は?何か不足していますか?