iPhone怪獣くるり

怪獣の絵をくるっと回す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