Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // TTMyScene.m
- // Sprite Kit Test
- //
- // Created by Weston Hanners on 2/25/14.
- // Copyright (c) 2014 Weston Hanners. All rights reserved.
- //
- #import "TTMyScene.h"
- @interface SKEmitterNode (SKEmitterNodeLoader)
- + (SKEmitterNode*)emitterNodeWithName:(NSString *)name;
- @end
- @implementation SKEmitterNode (SKEmitterNodeLoader)
- + (SKEmitterNode*)emitterNodeWithName:(NSString *)name {
- NSString *emitterPath = [[NSBundle mainBundle] pathForResource:name ofType:@"sks"];
- SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:emitterPath];
- return emitter;
- }
- @end
- unsigned short const keyDown = 125;
- unsigned short const keyLeft = 123;
- unsigned short const keyRight = 124;
- unsigned short const keyUp = 126;
- int speed = 5;
- typedef enum TTDirection {
- TTUp = 0,
- TTRight,
- TTDown,
- TTLeft
- } TTDirection;
- @implementation TTMyScene {
- SKNode *playerNode;
- SKNode *playerSpriteNode;
- SKNode *cameraNode;
- SKNode *backgroundNode;
- SKEmitterNode *emitter;
- SKEmitterNode *emitter2;
- TTDirection scrollDirection;
- BOOL down;
- BOOL left;
- BOOL right;
- BOOL up;
- }
- -(id)initWithSize:(CGSize)size {
- if (self = [super initWithSize:size]) {
- /* Setup your scene here */
- down = NO;
- left = NO;
- right = NO;
- up = NO;
- scrollDirection = TTUp;
- CGPoint center = CGPointMake(self.size.width * 0.5,
- self.size.height * 0.5);
- cameraNode = [SKNode node];
- emitter = [SKEmitterNode emitterNodeWithName:@"Exhaust"];
- SKTexture *backgroundTex = [SKTexture textureWithImageNamed:@"world"];
- [backgroundTex setFilteringMode:SKTextureFilteringLinear];
- playerNode = [SKNode node];
- playerSpriteNode = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
- backgroundNode = [SKSpriteNode spriteNodeWithTexture:backgroundTex];
- [backgroundNode setScale:3];
- [playerSpriteNode setScale:0.5];
- [emitter setScale:2];
- [emitter setTargetNode:backgroundNode];
- [playerNode setPosition:center];
- [cameraNode addChild:backgroundNode];
- [self addChild:cameraNode];
- //[emitter setPosition:center];
- //[playerSpriteNode setPosition:center];
- [playerNode addChild:emitter];
- [playerNode addChild:playerSpriteNode];
- [self addChild:playerNode];
- }
- return self;
- }
- -(void)rotatePlayerToDirection:(TTDirection)direction {
- CGFloat radDir;
- CGFloat emiDir;
- scrollDirection = direction;
- switch (direction) {
- case TTUp:
- radDir = 0;
- emiDir = 3.142;
- break;
- case TTRight:
- radDir = 4.712;
- emiDir = 1.571;
- break;
- case TTDown:
- radDir = 3.142;
- emiDir = 0;
- break;
- case TTLeft:
- radDir = 1.571;
- emiDir = 4.712;
- break;
- default:
- break;
- }
- SKAction *rotatePlayer = [SKAction rotateToAngle:radDir duration:0.1 shortestUnitArc:YES];
- [playerNode runAction:rotatePlayer];
- }
- -(void)mouseDown:(NSEvent *)theEvent {
- /* Called when a mouse click occurs */
- down = !down;
- }
- - (void)keyDown:(NSEvent *)theEvent {
- switch (theEvent.keyCode) {
- case keyDown:
- [self rotatePlayerToDirection:TTDown];
- break;
- case keyUp:
- [self rotatePlayerToDirection:TTUp];
- break;
- case keyLeft:
- [self rotatePlayerToDirection:TTLeft];
- break;
- case keyRight:
- [self rotatePlayerToDirection:TTRight];
- break;
- default:
- break;
- }
- }
- -(void)update:(CFTimeInterval)currentTime {
- /* Called before each frame is rendered */
- CGVector scrollVector;
- switch (scrollDirection) {
- case TTUp:
- scrollVector = CGVectorMake(0, -speed);
- break;
- case TTRight:
- scrollVector = CGVectorMake(-speed, 0);
- break;
- case TTDown:
- scrollVector = CGVectorMake(0, speed);
- break;
- case TTLeft:
- scrollVector = CGVectorMake(speed, 0);
- break;
- default:
- break;
- }
- SKAction *scroll = [SKAction moveBy:scrollVector duration:1];
- [cameraNode runAction:scroll];
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement