Objective-Cと戦うブログ-当たり判定で遊んでみる
ここのサイトを元に当たり判定を試してみる。そろそろプロジェクトのファイルが面倒くさくなってきたので、githubで公開してみました。githubあんまわからないので、落とせなかったらごめんなさい。
あたり判定についての考え方はここら辺を。
cocos2dやIPhone/iPadのゲームで「当たり判定」を実装する方法。
気になる点が1つあって、コード中の当たり判定エリアの座標を、実際のシミュレータの動きをみて少しずらしてある。本来ならxibの座標と合わせればいいだけのはずなんだけど、うーん、ちょっと謎。
1.以前の画像をドラッグするプロジェクトを開く
端折りたいので、この辺の記事で作った画像ドラッグのプロジェクトを用意する。
画像をドラッグする
2.当たり判定を出すエリアの作成
※ここのviewの作成を、参考サイトの通りにコードでやれば位置ずれは回避できそうかな。
xibを選択し、iphoneの画面の中心に120x120の大きさのimageViewを置く。
エリアをわかり易くするため、backgroundcolorに赤を選択。見た目だけなので、特に関連付けとかは必要ない。
3.コードの入力
今回変更するのは以下の部分のみ。
DraggableImageView.m
int i = 0; - (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event { CGPoint pt = [[touches anyObject] locationInView:self]; CGRect frame = [self frame]; frame.origin.x += pt.x - startLocation.x; frame.origin.y += pt.y - startLocation.y; [self setFrame:frame]; //目標ビューと同じ大きさのビューを作成 UIView *viewAField = [[UIView alloc]initWithFrame:CGRectMake(100, 170, 120, 120)]; //ビューと画像が重なり合ったか判定 if (CGRectIntersectsRect(self.frame, viewAField.frame)) { i++; NSLog(@"当たり!%d回目",i); } }
4.run
画像を2枚入れて、いじってみた。
プロジェクトファイル公開)
github
参考)
Objective-Cと戦うブログ-当たり判定で遊んでみる
cocos2dやIPhone/iPadのゲームで「当たり判定」を実装する方法。
サイズ指定