手探り状態で進めているアプリ開発。ようやく画面に反応が出るようになりました・・・。
といっても、タッチした場所にスプライトが表示されるというそれだけのものですが・・・。
このくらいなら簡単だと思ったけど、比較的苦戦。原因は、Objcetive-Cとcocos2dの知識のなさ・・・かな。もう少しさっくりと進めるようにならないと・・・時間を費やした割には、ということになりかねない。。
あと、マルチタッチのサンプルはあるんだけど、1つのタッチイベントを使用するサンプルが多くて、複数のタッチイベントを取得する方法がなかなか見つからなかったこと。
結局、ネット上の情報では足りずに、買ってあったiPad開発の本のサンプルを見てなんとかなりました。
iPadプログラミングの作法posted with amazlet at 10.11.04
買っておいて良かった・・・。
というわけで、以下はコード例。cocos2dというか、Objective-Cをあまり知らないから致命的なバグがあるかもしれないけれど・・・。
// GamePlayerLayer.h #import "cocos2d.h" @interface GamePlayerLayer : CCLayer { } @end
// GamePlayerLayer.m #import "GamePlayerLayer.h" @implementation GamePlayerLayer -(id) init { if ((self = [super init])) { CGSize winSize = [[CCDirector sharedDirector] winSize]; // Enabled multi touch self.isTouchEnabled = YES; return self; } -(void) dealloc { [super dealloc]; } -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // get points int count = [[event allTouches] count]; if (count > 0) { NSLog(@"touch!! : %d", count); for (UITouch* touch in touches) { CGPoint pt = [touch locationInView: [touch view]]; pt = [[CCDirector sharedDirector] convertToGL:pt]; // convert display's position // draw sprite CCSprite* player = [CCSprite spriteWithFile:@"PlayerPoint.png" rect:CGRectMake(0, 0, 128, 128)]; player.position = ccp(pt.x, pt.y); // set draw position player.scaleX = 0.5; // set scales player.scaleY = 0.5; [self addChild:player]; // add player(CCSprite) NSLog(@"touch!! %f, %f", pt.x, pt.y); } } } @end
参考にしたサイト
Ni chicha, ni limona -平均から抜けられない僕-
http://www.peacepipe.jp/blog/?p=467