From ce88520c726394c381fcd9c594b873cb15b984e5 Mon Sep 17 00:00:00 2001 From: Bolot Kerimbaev Date: Fri, 20 Sep 2013 15:57:48 +0200 Subject: [PATCH] SpriteKit demo: a cloud, hats and fire! --- .../SpritesInMotion.xcodeproj/project.pbxproj | 20 +++++++ SpritesInMotion/SpritesInMotion/BNRMyScene.m | 51 ++++++++++++++---- .../SpritesInMotion/BNRViewController.m | 6 +-- SpritesInMotion/SpritesInMotion/bnrhat@2x.png | Bin 0 -> 9317 bytes SpritesInMotion/SpritesInMotion/cloud@2x.png | Bin 0 -> 6320 bytes SpritesInMotion/SpritesInMotion/fire.sks | Bin 0 -> 3418 bytes SpritesInMotion/SpritesInMotion/roof@2x.png | Bin 0 -> 6279 bytes SpritesInMotion/SpritesInMotion/spark.png | Bin 0 -> 5191 bytes 8 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 SpritesInMotion/SpritesInMotion/bnrhat@2x.png create mode 100644 SpritesInMotion/SpritesInMotion/cloud@2x.png create mode 100644 SpritesInMotion/SpritesInMotion/fire.sks create mode 100644 SpritesInMotion/SpritesInMotion/roof@2x.png create mode 100644 SpritesInMotion/SpritesInMotion/spark.png diff --git a/SpritesInMotion/SpritesInMotion.xcodeproj/project.pbxproj b/SpritesInMotion/SpritesInMotion.xcodeproj/project.pbxproj index 0b99fee..97d12b4 100644 --- a/SpritesInMotion/SpritesInMotion.xcodeproj/project.pbxproj +++ b/SpritesInMotion/SpritesInMotion.xcodeproj/project.pbxproj @@ -23,6 +23,11 @@ DA49760217E88CFA0048115D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4975DD17E88CF90048115D /* UIKit.framework */; }; DA49760A17E88CFA0048115D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA49760817E88CFA0048115D /* InfoPlist.strings */; }; DA49760C17E88CFA0048115D /* SpritesInMotionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA49760B17E88CFA0048115D /* SpritesInMotionTests.m */; }; + DA49761617E9F7780048115D /* cloud@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA49761517E9F7780048115D /* cloud@2x.png */; }; + DA49761817E9FAAD0048115D /* bnrhat@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA49761717E9FAAD0048115D /* bnrhat@2x.png */; }; + DA49761F17EA12F50048115D /* fire.sks in Resources */ = {isa = PBXBuildFile; fileRef = DA49761D17EA12F50048115D /* fire.sks */; }; + DA49762017EA12F50048115D /* spark.png in Resources */ = {isa = PBXBuildFile; fileRef = DA49761E17EA12F50048115D /* spark.png */; }; + DA49762417EA232A0048115D /* roof@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA49762317EA232A0048115D /* roof@2x.png */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -58,6 +63,11 @@ DA49760717E88CFA0048115D /* SpritesInMotionTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SpritesInMotionTests-Info.plist"; sourceTree = ""; }; DA49760917E88CFA0048115D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; DA49760B17E88CFA0048115D /* SpritesInMotionTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SpritesInMotionTests.m; sourceTree = ""; }; + DA49761517E9F7780048115D /* cloud@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cloud@2x.png"; sourceTree = ""; }; + DA49761717E9FAAD0048115D /* bnrhat@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bnrhat@2x.png"; sourceTree = ""; }; + DA49761D17EA12F50048115D /* fire.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = fire.sks; sourceTree = ""; }; + DA49761E17EA12F50048115D /* spark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spark.png; sourceTree = ""; }; + DA49762317EA232A0048115D /* roof@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "roof@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -126,7 +136,12 @@ DA4975F117E88CF90048115D /* BNRViewController.m */, DA4975F317E88CF90048115D /* BNRMyScene.h */, DA4975F417E88CF90048115D /* BNRMyScene.m */, + DA49761517E9F7780048115D /* cloud@2x.png */, + DA49761717E9FAAD0048115D /* bnrhat@2x.png */, + DA49762317EA232A0048115D /* roof@2x.png */, DA4975F817E88CF90048115D /* Images.xcassets */, + DA49761D17EA12F50048115D /* fire.sks */, + DA49761E17EA12F50048115D /* spark.png */, DA4975E217E88CF90048115D /* Supporting Files */, ); path = SpritesInMotion; @@ -239,8 +254,13 @@ buildActionMask = 2147483647; files = ( DA4975E617E88CF90048115D /* InfoPlist.strings in Resources */, + DA49762417EA232A0048115D /* roof@2x.png in Resources */, + DA49761817E9FAAD0048115D /* bnrhat@2x.png in Resources */, DA4975F917E88CF90048115D /* Images.xcassets in Resources */, + DA49762017EA12F50048115D /* spark.png in Resources */, DA4975EF17E88CF90048115D /* Main.storyboard in Resources */, + DA49761617E9F7780048115D /* cloud@2x.png in Resources */, + DA49761F17EA12F50048115D /* fire.sks in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/SpritesInMotion/SpritesInMotion/BNRMyScene.m b/SpritesInMotion/SpritesInMotion/BNRMyScene.m index 559f4fe..ad3bc71 100644 --- a/SpritesInMotion/SpritesInMotion/BNRMyScene.m +++ b/SpritesInMotion/SpritesInMotion/BNRMyScene.m @@ -19,14 +19,20 @@ + (instancetype)randomColor } @end +@interface BNRMyScene () +@property (nonatomic, assign) NSUInteger numberOfHats; +@end + @implementation BNRMyScene -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { /* Setup your scene here */ - self.backgroundColor = [SKColor colorWithRed:0.9 green:0.95 blue:0.8 alpha:1.0]; + self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.5 alpha:1.0]; [self configurePhysicsWorld]; + [self createCloud]; [self createBuilding]; + self.numberOfHats = 0; } return self; } @@ -36,7 +42,10 @@ -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { for (UITouch *touch in touches) { CGPoint location = [touch locationInNode:self]; - [self createBouncingBallAtPoint:location]; + [self createBouncingHatAtPoint:location]; + if (++self.numberOfHats == 3) { + [self createEmitter]; + } } } @@ -46,16 +55,13 @@ - (void)configurePhysicsWorld self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0, 0, self.size.width, self.size.height)]; } -- (void)createBouncingBallAtPoint:(CGPoint)point +- (void)createBouncingHatAtPoint:(CGPoint)point { - CGFloat radius = 15.0; - // for physics simulation, we'll pretend it's a circle + CGFloat radius = 20.0; SKPhysicsBody *physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:radius]; physicsBody.velocity = CGVectorMake(300+arc4random_uniform(300), 200+arc4random_uniform(300)); physicsBody.restitution = 0.8; // make it bouncy - CGSize size = CGSizeMake(radius*2, radius*2); - // ...but will render it as a square to see the rotation - SKSpriteNode *ball = [SKSpriteNode spriteNodeWithColor:[SKColor randomColor] size:size]; + SKSpriteNode *ball = [SKSpriteNode spriteNodeWithImageNamed:@"bnrhat"]; ball.position = point; ball.physicsBody = physicsBody; [self addChild:ball]; @@ -68,22 +74,45 @@ - (void)createBuilding one.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size]; one.position = CGPointMake(self.size.width-60, 180); one.physicsBody.restitution = 0.5; - SKSpriteNode *two = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:size]; + SKSpriteNode *two = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:size]; two.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size]; two.position = CGPointMake(self.size.width-160, 180); two.physicsBody.restitution = 0.5; [self addChild:one]; [self addChild:two]; CGSize horiz = CGSizeMake(150, 25); - SKSpriteNode *three = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:horiz]; + SKSpriteNode *three = [SKSpriteNode spriteNodeWithImageNamed:@"roof"]; three.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:horiz]; three.position = CGPointMake(self.size.width-110, 300); three.physicsBody.restitution = 0.5; [self addChild:three]; } +- (void)createCloud +{ + SKSpriteNode *cloud = [SKSpriteNode spriteNodeWithImageNamed:@"cloud"]; + cloud.position = CGPointMake(60, 280); + SKAction *goRight = [SKAction moveByX:300 y:0 duration:2]; + SKAction *goLeft = [goRight reversedAction]; + SKAction *action = [SKAction sequence:@[goRight, goLeft]]; + [cloud runAction:[SKAction repeatActionForever:action]]; + [self addChild:cloud]; +} + +- (void)createEmitter +{ + [self addChild:[self newFireEmitter]]; +} + +- (SKEmitterNode *) newFireEmitter +{ + NSString *firePath = [[NSBundle mainBundle] pathForResource:@"fire" ofType:@"sks"]; + SKEmitterNode *fire = [NSKeyedUnarchiver unarchiveObjectWithFile:firePath]; + fire.position = CGPointMake(self.size.width-110, 10); + return fire; +} + -(void)update:(CFTimeInterval)currentTime { /* Called before each frame is rendered */ } - @end diff --git a/SpritesInMotion/SpritesInMotion/BNRViewController.m b/SpritesInMotion/SpritesInMotion/BNRViewController.m index 6fa0a15..553045d 100644 --- a/SpritesInMotion/SpritesInMotion/BNRViewController.m +++ b/SpritesInMotion/SpritesInMotion/BNRViewController.m @@ -20,9 +20,9 @@ - (void)viewDidLoad - (void)viewDidAppear:(BOOL)animated { // Configure the view. - SKView * skView = (SKView *)self.view; - skView.showsFPS = YES; - skView.showsNodeCount = YES; +// SKView * skView = (SKView *)self.view; +// skView.showsFPS = YES; +// skView.showsNodeCount = YES; [self resetScene]; } diff --git a/SpritesInMotion/SpritesInMotion/bnrhat@2x.png b/SpritesInMotion/SpritesInMotion/bnrhat@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..593adc0b603d1b7935d2cf8993b3ba33de82a44e GIT binary patch literal 9317 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 literal 0 HcmV?d00001 diff --git a/SpritesInMotion/SpritesInMotion/cloud@2x.png b/SpritesInMotion/SpritesInMotion/cloud@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..863943dc3b6b5ca43d0b021d7e17d82a2a0cd606 GIT binary patch literal 6320 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 Ag#Z8m literal 0 HcmV?d00001 diff --git a/SpritesInMotion/SpritesInMotion/spark.png b/SpritesInMotion/SpritesInMotion/spark.png new file mode 100644 index 0000000000000000000000000000000000000000..3383a218caa6310f93bf704104a41f01aaa95691 GIT binary patch literal 5191 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 B@g@KO literal 0 HcmV?d00001