Top Banner
SPRITEKIT Тутубалин Роман AnjLab г. Владимир
15

SpriteKit (AnjLab Tech Talks)

Apr 13, 2017

Download

Technology

AnjLab
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

Тутубалин Роман

AnjLab

г. Владимир

Page 2: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKSCENEApplication UIView

SKView

SKScene

UIViewController

Настройка SKView

Создание сцены

Page 3: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKNODE

▸ SKSpriteNode

▸ SKLabelNode

▸ SKShapeNode

▸ SKEmitterNode

▸ SKEffectNode

▸ SKCropNode

▸ SKVideoNode

Page 4: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKNODE

▸ Положение, поворот, масштаб

▸ zPozition

Page 5: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKSPRITENODE

SKSpriteNode *moon = [SKSpriteNode spriteNodeWithImageNamed:@"moon.png"];

moon.color = [UIColor greenColor];

moon.colorBlendFactor = 0.7;

moon.png

Page 6: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKSHAPENODE

SKShapeNode *rect = [SKShapeNode shapeNodeWithRect:CGRectMake(0.0, 0.0, 100.0, 100.0) cornerRadius:8.0];

rect.lineWidth = 3.0;

rect.strokeColor = [SKColor redColor];

SKShapeNode *ellipse = [SKShapeNode shapeNodeWithEllipseInRect:

CGRectMake(0.0, 0.0, 50.0, 100.0)];

ellipse.fillColor = [SKColor yellowColor];

SKShapeNode *triangle = [[SKShapeNode alloc] init];

UIBezierPath *bezierPath = [UIBezierPath bezierPath];

. . .

[bezierPath closePath];

triangle.path = bezierPath.CGPath;

triangle.strokeColor = [SKColor greenColor];

triangle.lineWidth = 3.0;

Page 7: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKEMITTERNODE

NSSpriteNode *cloud = ...

NSString *rainPath = [[NSBundle mainBundle] pathForResource:@"rain" ofType:@"sks"];

SKEmitterNode *rain = [NSKeyedUnarchiver unarchiveObjectWithFile:rainPath];

rain.position = CGPointMake(0, cloud.size.height -10);

[cloud addChild:rain];

rain.particleScale = 2;

Page 8: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKEFFECTNODE

SKEffectNode *blur = [[SKEffectNode alloc] init];

moon.blendMode = SKBlendModeAdd;

[blur addChild:moon];

CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

[filter setDefaults];

blur.filter = filter;

[self addChild:blur];

self.shouldEnableEffects = YES;

Применяет CIFilter для потомков

CIFilter - мощный фильтр CoreImage

Может быть применен для всей сцены

Page 9: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKCROPNODE

SKSpriteNode *brickwall = [SKSpriteNode spriteNodeWithImageNamed:@"brickwall.jpg"];

SKCropNode *crop = [SKCropNode node];

[crop addChild:brickwall];

[crop setMaskNode:moon];

[self addChild:crop];

Page 10: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKVIDEONODE

▸ Видео = компонент

▸ AVPlayer (AVFoundation.framework)

▸ Вся функциональность AVFoundation

[SKVideoNode videoNodeWithVideoFileNamed:@"video.mp4"];

[SKVideoNode videoNodeWithAVPlayer:player];

Page 11: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

ДЕЙСТВИЯСоздание действий

Применение действий

[SKAction moveTo:CGPointMake(100,100) duration:1.0];

[SKAction rotateByAngle:M_PI duration:1.0];

[SKAction fadeAlphaTo:0.75 duration:1.0];

[SKAction scaleBy:10.0 duration:1.0];

SKAction *move = [SKAction moveTo:aPoint duration:0.0];

[moon runAction:move];

Page 12: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

ПОВТОРЯЮЩИЕСЯ ДЕЙСТВИЯ

SKAction *move = [SKAction moveTo:aPoint duration:0.5];

SKAction *repeat = [SKAction repeatAction:move count:3];

SKAction *repeatForever = [SKAction repeatActionForever:move];

Page 13: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

ОБЪЕДИНЕНИЕ ДЕЙСТВИЙ

1 сек 2 сек 1.5 сек

[node runAction:[SKAction sequence:@[action1, action2, action3]]];

1 сек

2 сек

1.5 сек

[node runAction:[SKAction group:@[action1, action2, action3]]];

Page 14: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

SKPHYSICSBODY И SKPHYSICSWORLD

moon.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius: moon.size.width / 2];

moon.physicsBody.mass = 10;

moon.physicsBody.velocity = aCGVector;

self.physicsWorld.gravity = CGPointMake(0.0, -9.8);

self.physicsWorld.gravity = CGPointMake(0.0, +9.8);

Page 15: SpriteKit (AnjLab Tech Talks)

SPRITEKIT

СПАСИБО ЗА ВНИМАНИЕ