Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // GameScene.swift
- // SpriteKitSimpleGame
- //
- // Created by James Leist on 28/11/2016.
- // Copyright © 2016 James Leist. All rights reserved.
- //
- import SpriteKit
- import CoreMotion
- var motionManager = CMMotionManager()
- enum BodyType:UInt32 {
- case player = 1
- case score = 2
- case dontCollide = 4
- case sides = 8
- }
- class GameScene: SKScene, SKPhysicsContactDelegate {
- var destX:CGFloat = 0.0
- let player = SKSpriteNode(imageNamed: "Airplane")
- var bg1:SKSpriteNode!
- var bg2:SKSpriteNode!
- var blockLeft1:SKSpriteNode!
- var blockRight1:SKSpriteNode!
- var blockScore1:SKSpriteNode!
- var currentScore = 0
- var scoreLabel:SKLabelNode!
- let playSound = SKAction.playSoundFileNamed("phaserDown3.mp3", waitForCompletion: false)
- override func didMove(to view: SKView) {
- physicsWorld.contactDelegate = self
- backgroundColor = SKColor.white
- addScrollingBG()
- addRandomBlocks1()
- // sideRestraints()
- scoreLabel = SKLabelNode(fontNamed: "Copperplate-Bold")
- scoreLabel.text = String(currentScore)
- scoreLabel.fontSize = 80
- scoreLabel.position = CGPoint(x: frame.size.width - 60, y: frame.size.height - 60)
- scoreLabel.zPosition = 20
- self.addChild(scoreLabel)
- player.zPosition = 15
- player.position = CGPoint(x: size.width * 0.1, y: size.height * 0.5)
- // player.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "Airplane"), size: CGSize(width: player.size.width, height: player.size.height))
- player.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: player.size.width, height: player.size.height))
- player.physicsBody?.affectedByGravity = false
- player.physicsBody!.categoryBitMask = BodyType.player.rawValue
- player.physicsBody!.contactTestBitMask = BodyType.score.rawValue | BodyType.sides.rawValue
- player.physicsBody!.collisionBitMask = BodyType.sides.rawValue
- addChild(player)
- }
- func addScrollingBG() {
- bg1 = SKSpriteNode(imageNamed: "bgPlayScene")
- bg1.anchorPoint = CGPoint.zero
- bg1.position = CGPoint(x: 0, y: 0)
- // bg1.size = CGSize(width: frame.size.width, height: frame.size.height)
- bg1.zPosition = 1
- addChild(bg1)
- bg2 = SKSpriteNode(imageNamed: "bgPlayScene")
- bg2.anchorPoint = CGPoint.zero
- bg2.position = CGPoint(x: 0, y: bg1.size.height)
- // bg2.size = CGSize(width: frame.size.width, height: frame.size.height)
- bg2.zPosition = 1
- self.addChild(bg2)
- }
- func addRandomBlocks1() {
- let frameWidthDiv3 = UInt32(frame.size.width/3)
- let randomLeftX = arc4random_uniform(frameWidthDiv3) + 50
- let randomLeftWith = Int(randomLeftX)
- let frameWidthDiv12 = UInt32(frame.size.width-70)
- let frameWidthDiv18 = UInt32(frame.size.width/1.8)
- let randomrightX = arc4random_uniform(frameWidthDiv12 - frameWidthDiv18) + frameWidthDiv18
- let randomRightWith = CGFloat(randomrightX)
- blockLeft1 = SKSpriteNode(imageNamed: "block")
- blockLeft1.anchorPoint = CGPoint.zero
- blockLeft1.position = CGPoint(x: 0, y: frame.size.height+150)
- blockLeft1.size = CGSize(width: randomLeftWith, height: 50)
- blockLeft1.zPosition = 5;
- addChild(blockLeft1)
- blockRight1 = SKSpriteNode(imageNamed: "block")
- blockRight1.anchorPoint = CGPoint.zero
- blockRight1.position = CGPoint(x: randomRightWith, y: frame.size.height+150)
- blockRight1.size = CGSize(width: frame.size.width, height: 50)
- blockRight1.zPosition = 5;
- addChild(blockRight1)
- blockScore1 = SKSpriteNode()
- blockScore1.anchorPoint = CGPoint.zero
- blockScore1.position = CGPoint(x: 0, y: blockLeft1.position.y)
- blockScore1.size = CGSize(width: frame.size.width, height: 50)
- blockScore1.zPosition = 4;
- blockScore1.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: blockRight1.size.width, height: blockRight1.size.height))
- blockScore1.physicsBody?.affectedByGravity = false
- blockScore1.physicsBody!.categoryBitMask = BodyType.score.rawValue
- blockScore1.physicsBody!.contactTestBitMask = BodyType.player.rawValue
- blockScore1.physicsBody!.collisionBitMask = BodyType.dontCollide.rawValue
- addChild(blockScore1)
- }
- override func update(_ currentTime: CFTimeInterval) {
- /* Called before each frame is rendered */
- let currentX = self.player.position.x
- if motionManager.isAccelerometerAvailable == true {
- motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: {
- data, error in
- self.destX = currentX + CGFloat((data?.acceleration.x)! * 40)
- print(CGFloat((data?.acceleration.x)!))
- })
- }
- if (destX <= 0) {
- destX = 0
- }
- if (destX >= frame.size.width) {
- destX = frame.size.width
- }
- //let action = SKAction.moveTo(x: destX, duration: 0.1)
- //self.player.run(action)
- player.position.x = destX
- // print(destX)
- bg1.position = CGPoint(x: bg1.position.x, y: bg1.position.y-4)
- bg2.position = CGPoint(x: bg2.position.x, y: bg2.position.y-4)
- if bg1.position.y < -bg1.size.height {
- bg1.position = CGPoint(x: bg1.position.x, y: bg2.position.y + bg2.size.height)
- }
- if bg2.position.y < -bg2.size.height {
- bg2.position = CGPoint(x: bg2.position.x, y: bg1.position.y + bg1.size.height)
- }
- blockLeft1.position = CGPoint(x: blockLeft1.position.x, y: blockLeft1.position.y-4)
- blockRight1.position = CGPoint(x: blockRight1.position.x, y: blockRight1.position.y-4)
- blockScore1.position = CGPoint(x: blockScore1.position.x, y: blockScore1.position.y-4)
- if blockLeft1.position.y < -blockLeft1.size.height {
- addRandomBlocks1()
- }
- }
- func didBegin(_ contact: SKPhysicsContact) {
- let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
- switch(contactMask) {
- case BodyType.player.rawValue | BodyType.score.rawValue:
- currentScore += 1
- run(playSound)
- scoreLabel.text = String(currentScore)
- // print(currentScore)
- default:
- return
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement