subscribe on iTunes
Forget what need to be done for submitting for review
Splash Screen Issues
iconmaker - https://github.com/J0hnniemac/iconmaker
launchmaker - https://github.com/J0hnniemac/launchmaker
swimmer class - early dev
//// ada.swift// SharkAttackDec2016//// Created by John McManus on 07/12/2016.// Copyright © 2016 John McManus. All rights reserved.//import SpriteKitclass ada :SKSpriteNode{let gravity :CGFloat = 50.0var isGravityOn = truevar rememberStartPosition : CGPoint!var isSwimming = falselet adaTextures = [SKTexture(imageNamed: "Ada1"),SKTexture(imageNamed: "Ada2"),SKTexture(imageNamed: "Ada3"),SKTexture(imageNamed: "Ada4")]var adaAni :SKAction!convenience init(startNode :SKNode){self.init(texture: SKTexture(imageNamed: "Ada1"))self.rememberStartPosition = startNode.positionself.position = self.rememberStartPositionself.name = "playerAda"setupAni()}private func setupAni(){adaAni = SKAction.repeatForever(SKAction.animate(with: adaTextures, timePerFrame: 0.1))}func startSwim(){// start swim animationself.run(adaAni)isSwimming = true}func stopSwim(){//stop swim animationself.removeAllActions()isSwimming = false}func applyGravity(dt :TimeInterval){if !isSwimming {return}if !isGravityOn {return}let distance = gravity * CGFloat(dt)self.position.y = self.position.y - distance}func swimForceUp(){if !isSwimming {return}if !(self.action(forKey: "swimforce") != nil){let a1 = SKAction.moveBy(x: 0, y: 15, duration: 0.1)let a2 = SKAction.run {self.isGravityOn = true}let seq = SKAction.sequence([a1,a2])self.run(seq, withKey: "swimforce")}}func update(dt :TimeInterval){applyGravity(dt: dt)}}
Scenery Class - subclassing SKNode
//// scenery.swift// SharkAttackDec2016//// Created by John McManus on 06/12/2016.// Copyright © 2016 John McManus. All rights reserved.//import SpriteKitimport GameplayKitclass scenery: SKNode {var bgSpeed: CGFloat!var bgTextures :[SKTexture]!//var bgPosition: bgPossiblePosition!var repititions : Int!var nodeList :[SKSpriteNode]!var totalLength :CGFloat = 0var overlap : CGFloat = 0var endX :CGFloat = 0convenience init( bgTextures :[SKTexture], bgSpeed :CGFloat, repititions:Int, overlap :CGFloat){self.init()self.bgTextures = bgTextures//self.bgPosition = bgPositionself.bgSpeed = bgSpeedself.repititions = repititionsself.overlap = overlapsetupScenery()}private func setupScenery(){let maxBGs = bgTextures.count - 1var nextPosition = CGPoint.zeronodeList = [SKSpriteNode]()for i in 1...repititions {print(i)let nextText = GKRandomSource.sharedRandom().nextInt(upperBound: maxBGs)let nextPiece = SKSpriteNode(texture: bgTextures[nextText])nextPiece.position = nextPositionself.addChild(nextPiece)nextPosition.x = nextPosition.x + nextPiece.size.width - overlapnodeList.append(nextPiece)totalLength = totalLength + nextPiece.size.width - overlap}endX = (-totalLength / 2)}func scrollLeft(dt :TimeInterval){let delta = bgSpeed * CGFloat(dt)for p in nodeList{p.position.x = p.position.x - deltaif p.position.x < endX {//move to end posp.position.x = p.position.x + totalLength}}}func update(dt:TimeInterval){scrollLeft(dt: dt)}}Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More