
怪獣の絵をくるっと回すiPhoneアプリのサンプルコードを描いています。
#import “ViewController.h”
#import <SpriteKit/SpriteKit.h>
@interface KaijuScene : SKScene
@end
@implementation KaijuScene
– (void)didMoveToView:(SKView *)view
{
self.backgroundColor = [SKColor whiteColor];
[self createKaiju];
SKLabelNode *title = [SKLabelNode node];
title.text = @”kaiju”;
title.position = CGPointMake(160, 40);
title.fontColor = [UIColor darkTextColor];
[self addChild:title];
}
– (void)createKaiju
{
SKNode *kaiju = [SKNode node];
kaiju.name = @”kaiju”;
UIBezierPath *pathA = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:100 startAngle:0 endAngle:M_PI clockwise:YES];
[pathA closePath];
SKShapeNode *head = [SKShapeNode node];
head.path = pathA.CGPath;
head.position= CGPointMake(130, 300);
head.fillColor = [SKColor greenColor];
[kaiju addChild:head];
SKSpriteNode *body = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(160, 140)];
body.position = CGPointMake(150, 220);
[kaiju addChild:body];
SKSpriteNode *foot = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(120, 40)];
foot.position = CGPointMake(90, 120);
[kaiju addChild:foot];
UIBezierPath *pathB = [UIBezierPath bezierPath];
[pathB moveToPoint:CGPointMake(-40, 20)];
[pathB addLineToPoint:CGPointMake(-40, –20)];
[pathB addLineToPoint:CGPointMake(40, –20)];
[pathB closePath];
SKShapeNode *tail = [SKShapeNode node];
tail.fillColor = [SKColor greenColor];
tail.path = pathB.CGPath;
tail.position = CGPointMake(275, 170);
[kaiju addChild:tail];
UIBezierPath *pathC = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:20 startAngle:0 endAngle:2.0*M_PI clockwise:NO];
SKShapeNode *eye = [SKShapeNode node];
eye.path = pathC.CGPath;
eye.fillColor = [SKColor blackColor];
eye.position = CGPointMake(80, 370);
eye.lineWidth = 5;
[kaiju addChild:eye];
SKSpriteNode *m = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:CGSizeMake(50, 10)];
m.position = CGPointMake(50, 320);
[kaiju addChild:m];
for (int i=0; i<3; i++) {
float angle = M_PI/5.0 * i;
float x = 120 * cos(angle) + 135;
float y = 120 * sin(angle) + 305;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(-20, 20)];
[path addLineToPoint:CGPointMake(-20, –20)];
[path addLineToPoint:CGPointMake(20, 0)];
[path closePath];
SKShapeNode *n = [SKShapeNode node];
n.path = path.CGPath;
n.position = CGPointMake(x, y);
n.zRotation = angle;
n.fillColor = [SKColor greenColor];
[kaiju addChild:n];
}
[self addChild:kaiju];
}
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SKNode *kaiju = [self childNodeWithName:@”kaiju”];
[kaiju runAction:[SKAction rotateByAngle:2.0*M_PI duration:1.0]];
}
@end
@interface ViewController ()
@end
@implementation ViewController
– (void)viewDidLoad
{
[super viewDidLoad];
SKView *spriteView = [[SKView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:spriteView];
SKScene *scene = [[KaijuScene alloc] initWithSize:spriteView.frame.size];
[spriteView presentScene:scene];
}
– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end