Cocos2d-xタイトルにCocos2d-x(2D用のゲームエンジン)でと書きましたが考え方自体は普遍的な円と矩形(長方形)の当たり判定の処理についてです。言っても条件式式が結構難しい(当方には説明が難しい)ため解説は以下のサイトが分かりやすくまとまっていますのででそちらで確認ください。ftvoid.com四角形と円が重なるときの条件の出し方ややトリッキーなのかと思います。実際に実装するとこんな感じになります。白い丸の範囲に赤い四角形が入ったときに当たったと判定されています。確認環境は以下の通りです。.oO(すいません今回もモバイルで動作確認してません。動くの精神で...)実装コード解説サイトにあった式と大きく見た目が変わらないように式をコードにひとつづつ当てはめていきます。CollitionUtilクラスそんなに長いコードではないのでCollitionUtilクラスを作成してヘッダーに全部処理を記述してしまいます。角度なし版Nodeに角度が付いていない場合の処理方法は以下の通りです。}};コンパイル時にある程度最適化されるのでそこまで神経質になる必要はないかと思いますが、一時変数などに値を保存せずにそのまま判定文に書いたほうが効率的が良くなるかもしれません。判定したいところで先ほどのメソッドを呼び出します。円として扱うNodeには円の半径(radius)が必要です。}}角度あり版Nodeに角度が付いている場合計算が少し難しくなります。基本的にNode::getBoundingBox()で衝突対象の矩形を取得したいのですが、回転していると以下の図のように4辺の最大値が取れてしまいます。従って以下のサイトにある通り、矩形の回転を取り除き円の位置を補正してやる必要があります。Programmingまた、Cocos2d-xのNodeはAnchorPointの指定によって回転中心がNodeの中心以外に存在する場合があるのでそれも考慮して計算を行います。こちらは動かすとこんな感じになります。先ほどのCollitionUtilクラスに判定用のメソッドを追加します。}};Nodeが入れ子になってる場合など単純にNodeを渡しても計算ができない場面が稀によくあるため、プリミティブな型を渡して計算できるオーバーロードを実装しています。中で色々やっていますが、使い方は先ほどの角度無し版とほぼ同じです。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。AES暗号化・復号化(3.17.1対応版)Cocos2d-xでStaticクラスのメソッドやフリー関数をコールバックに指定するマクロCocos2d-xで画像を任意の色で点滅させる(3.x系)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。