iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
『Sprite Kit Programming Guide』を参考に、サンプルコードを拡張していきたいと思う。
インスタンス変数を使って保持していなくても取得できるように、最初に表示するラベルに名前を付ける。
@implementation MyScene
-(id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size]) {
self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];
SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
myLabel.name = @"myLabel"; /* ノードに名前を付ける */
myLabel.text = @"Hello, World!";
myLabel.fontSize = 30;
myLabel.position = CGPointMake(CGRectGetMidX(self.frame),
CGRectGetMidY(self.frame));
[self addChild:myLabel];
}
return self;
}
...
@end
名前を付けたノードをタッチされた際に取得して、アニメーションさせる。
@implementation MyScene
...
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SKNode *myLabel = [self childNodeWithName:@"myLabel"]; /* ノードを取得する */
if (myLabel != nil) {
myLabel.name = nil;
SKAction *moveUp = [SKAction moveByX: 0 y: 100.0 duration: 0.5]; /* 上昇 */
SKAction *zoom = [SKAction scaleTo: 2.0 duration: 0.25]; /* 拡大 */
SKAction *pause = [SKAction waitForDuration: 0.5]; /* 停止 */
SKAction *fadeAway = [SKAction fadeOutWithDuration: 0.25]; /* フェードアウト */
SKAction *remove = [SKAction removeFromParent]; /* 消滅 */
SKAction *moveSequence = [SKAction sequence:@[moveUp, zoom, pause, fadeAway, remove]];
[myLabel runAction:moveSequence];
}
}
...
@end