Advertisement
Kronusdark

SpriteKit emitter stuff

Feb 26th, 2014
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. //
  2. // TTMyScene.m
  3. // Sprite Kit Test
  4. //
  5. // Created by Weston Hanners on 2/25/14.
  6. // Copyright (c) 2014 Weston Hanners. All rights reserved.
  7. //
  8.  
  9. #import "TTMyScene.h"
  10.  
  11. @interface SKEmitterNode (SKEmitterNodeLoader)
  12.  
  13. + (SKEmitterNode*)emitterNodeWithName:(NSString *)name;
  14.  
  15. @end
  16.  
  17. @implementation SKEmitterNode (SKEmitterNodeLoader)
  18.  
  19.  
  20. + (SKEmitterNode*)emitterNodeWithName:(NSString *)name {
  21. NSString *emitterPath = [[NSBundle mainBundle] pathForResource:name ofType:@"sks"];
  22. SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:emitterPath];
  23. return emitter;
  24. }
  25.  
  26. @end
  27.  
  28. unsigned short const keyDown = 125;
  29. unsigned short const keyLeft = 123;
  30. unsigned short const keyRight = 124;
  31. unsigned short const keyUp = 126;
  32. int speed = 5;
  33.  
  34. typedef enum TTDirection {
  35. TTUp = 0,
  36. TTRight,
  37. TTDown,
  38. TTLeft
  39. } TTDirection;
  40.  
  41.  
  42. @implementation TTMyScene {
  43. SKNode *playerNode;
  44. SKNode *playerSpriteNode;
  45. SKNode *cameraNode;
  46. SKNode *backgroundNode;
  47. SKEmitterNode *emitter;
  48. SKEmitterNode *emitter2;
  49.  
  50. TTDirection scrollDirection;
  51.  
  52. BOOL down;
  53. BOOL left;
  54. BOOL right;
  55. BOOL up;
  56. }
  57.  
  58. -(id)initWithSize:(CGSize)size {
  59. if (self = [super initWithSize:size]) {
  60. /* Setup your scene here */
  61. down = NO;
  62. left = NO;
  63. right = NO;
  64. up = NO;
  65.  
  66. scrollDirection = TTUp;
  67.  
  68. CGPoint center = CGPointMake(self.size.width * 0.5,
  69. self.size.height * 0.5);
  70.  
  71. cameraNode = [SKNode node];
  72.  
  73. emitter = [SKEmitterNode emitterNodeWithName:@"Exhaust"];
  74. SKTexture *backgroundTex = [SKTexture textureWithImageNamed:@"world"];
  75. [backgroundTex setFilteringMode:SKTextureFilteringLinear];
  76. playerNode = [SKNode node];
  77. playerSpriteNode = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
  78. backgroundNode = [SKSpriteNode spriteNodeWithTexture:backgroundTex];
  79. [backgroundNode setScale:3];
  80. [playerSpriteNode setScale:0.5];
  81. [emitter setScale:2];
  82. [emitter setTargetNode:backgroundNode];
  83.  
  84. [playerNode setPosition:center];
  85.  
  86. [cameraNode addChild:backgroundNode];
  87.  
  88.  
  89.  
  90. [self addChild:cameraNode];
  91. //[emitter setPosition:center];
  92. //[playerSpriteNode setPosition:center];
  93.  
  94. [playerNode addChild:emitter];
  95. [playerNode addChild:playerSpriteNode];
  96. [self addChild:playerNode];
  97.  
  98. }
  99. return self;
  100. }
  101.  
  102. -(void)rotatePlayerToDirection:(TTDirection)direction {
  103.  
  104. CGFloat radDir;
  105. CGFloat emiDir;
  106. scrollDirection = direction;
  107.  
  108. switch (direction) {
  109. case TTUp:
  110. radDir = 0;
  111. emiDir = 3.142;
  112. break;
  113. case TTRight:
  114. radDir = 4.712;
  115. emiDir = 1.571;
  116. break;
  117. case TTDown:
  118. radDir = 3.142;
  119. emiDir = 0;
  120. break;
  121. case TTLeft:
  122. radDir = 1.571;
  123. emiDir = 4.712;
  124. break;
  125.  
  126. default:
  127. break;
  128. }
  129.  
  130.  
  131.  
  132. SKAction *rotatePlayer = [SKAction rotateToAngle:radDir duration:0.1 shortestUnitArc:YES];
  133.  
  134. [playerNode runAction:rotatePlayer];
  135.  
  136. }
  137.  
  138. -(void)mouseDown:(NSEvent *)theEvent {
  139. /* Called when a mouse click occurs */
  140.  
  141. down = !down;
  142.  
  143. }
  144.  
  145. - (void)keyDown:(NSEvent *)theEvent {
  146.  
  147. switch (theEvent.keyCode) {
  148.  
  149. case keyDown:
  150. [self rotatePlayerToDirection:TTDown];
  151. break;
  152. case keyUp:
  153. [self rotatePlayerToDirection:TTUp];
  154. break;
  155. case keyLeft:
  156. [self rotatePlayerToDirection:TTLeft];
  157. break;
  158. case keyRight:
  159. [self rotatePlayerToDirection:TTRight];
  160. break;
  161. default:
  162. break;
  163. }
  164.  
  165. }
  166.  
  167. -(void)update:(CFTimeInterval)currentTime {
  168. /* Called before each frame is rendered */
  169.  
  170. CGVector scrollVector;
  171.  
  172. switch (scrollDirection) {
  173. case TTUp:
  174. scrollVector = CGVectorMake(0, -speed);
  175. break;
  176. case TTRight:
  177. scrollVector = CGVectorMake(-speed, 0);
  178. break;
  179. case TTDown:
  180. scrollVector = CGVectorMake(0, speed);
  181. break;
  182. case TTLeft:
  183. scrollVector = CGVectorMake(speed, 0);
  184. break;
  185.  
  186. default:
  187. break;
  188. }
  189.  
  190.  
  191.  
  192. SKAction *scroll = [SKAction moveBy:scrollVector duration:1];
  193.  
  194. [cameraNode runAction:scroll];
  195. }
  196.  
  197. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement