スワイプで画像を動かしてみた。
タッチ開始時の処理
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; startPt = [touch locationInNode:self]; SKNode *cat = [self childNodeWithName:@"cat"]; startCatPosX = cat.position.x; }
タッチが始まったときに、ネコの画像の位置をstartCatPosXに保持する。startPtはタッチした指の位置。
タッチ後移動した時の処理
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ if(touches.count == 1){ UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode *cat = [self childNodeWithName:@"cat"]; //移動量を加算 int posX = startCatPosX + (location.x - startPt.x); cat.position = CGPointMake(posX, CGRectGetMidY(self.frame) - 100); //壁の境界 if(cat.position.x > SCREEN_RIGHT){ cat.position = CGPointMake(SCREEN_RIGHT, CGRectGetMidY(self.frame) - 100); }else if (cat.position.x < SCREEN_LEFT){ cat.position = CGPointMake(SCREEN_LEFT, CGRectGetMidY(self.frame) - 100); } } }
移動量を計算している
posX = タッチ開始時のネコ画像のX座標 + (タッチ後移動した時の指のX座標 - タッチ開始時の指のX座標)
日本語で説明すると上のようになる。
これでスワイプの開始位置がどこになっても、指で動かしたぶん、ネコの画像が動くようになった。