not good but great

プログラミング、アート、映画・本の感想について書きます。

SKActionを使って簡単なアニメーションを実装した

クソゲー作ることで敷居を下げて学習

iOSクソゲー、格好良く言えばインディーゲームを作ろうとしている。iOSの学習は4月から始めたが、幾度となく挫折してきた。継続するために、目標を低くし、アウトプットを出すことを心がける。

SprikeKitを使用

SpriteKitを作って開発することにした。分かる人がまわりにいるからだ。

このへんを参考にした。
http://spritekit.jp/tutorial/animation/

Sprite KitでFlappy Birdを作る - Qiita

アニメーションさせる


マウスでクリックしたところに移動する。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    
    SKNode *cat = [self childNodeWithName:@"cat"];
    SKAction *moveToTouch = [SKAction moveTo:location duration:1.0f];
    [cat runAction:moveToTouch completion:^{NSLog(@"%@",NSStringFromCGPoint(location));}];
}

アニメーションを繰り返す

//図形を移動
CGPoint screenTop = CGPointMake(cat.position.x, self.view.bounds.size.height);
CGPoint screenBottom = CGPointMake(cat.position.x, 0);
SKAction *moveDown = [SKAction moveTo:screenBottom duration:2.0f];
SKAction *moveTop = [SKAction moveTo:screenTop duration:0.0f];

上に戻る方法がわからなかった。参考サイトを見ると、duration:0.0fになっていた。0秒で戻ればいいのだ。

//一連のアニメーション
SKAction *sequence = [SKAction sequence:@[moveDown,moveTop]];

sequenceというグループにアニメーションをセットすれば、複数のアニメーションを実行できる。

[wall runAction:[SKAction repeatActionForever:sequence]];

repeatActionForeverで繰り返し実行できる。