From 90b0dd357d8d315049f15eb8b7242b007172156e Mon Sep 17 00:00:00 2001 From: lucifer Date: Sun, 19 Jul 2015 03:04:37 +0300 Subject: [PATCH] added ground --- Xmaze/Xmaze/GameData.plist | 2 +- Xmaze/Xmaze/GameScene.swift | 53 +++++++++++++++++- .../star_field.imageset/Contents.json | 21 +++++++ .../star_field.imageset/star_filed.png | Bin 0 -> 29830 bytes 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 Xmaze/Xmaze/Images.xcassets/star_field.imageset/Contents.json create mode 100644 Xmaze/Xmaze/Images.xcassets/star_field.imageset/star_filed.png diff --git a/Xmaze/Xmaze/GameData.plist b/Xmaze/Xmaze/GameData.plist index 5d0f30d..923fa6d 100644 --- a/Xmaze/Xmaze/GameData.plist +++ b/Xmaze/Xmaze/GameData.plist @@ -27,7 +27,7 @@ ShowPhysics ParallaxOffset - { 0.7, 0.8 } + { 0.7, 0.7 } Gravity { 0.0, 0.0 } diff --git a/Xmaze/Xmaze/GameScene.swift b/Xmaze/Xmaze/GameScene.swift index cb96342..887f5fe 100644 --- a/Xmaze/Xmaze/GameScene.swift +++ b/Xmaze/Xmaze/GameScene.swift @@ -34,6 +34,8 @@ class GameScene: SKScene, SKPhysicsContactDelegate, NSXMLParserDelegate{ var heroIsDead:Bool = false var starsAcquired:Int = 0 var starsTotal:Int = 0 + var starsLabel:SKLabelNode? + var starsLeft:Int = 0 var enemyCount:Int = 0 var enemyDictionnary:[String : CGPoint] = [:] @@ -43,10 +45,10 @@ class GameScene: SKScene, SKPhysicsContactDelegate, NSXMLParserDelegate{ var bgImage:String? var enemyLogic:Double? var gameLabel:SKLabelNode? + var parallaxBG:SKSpriteNode? var parallaxOffset:CGPoint = CGPointZero - var starsLabel:SKLabelNode? - var starsLeft:Int = 0 + override func didMoveToView(view: SKView) { @@ -184,6 +186,14 @@ class GameScene: SKScene, SKPhysicsContactDelegate, NSXMLParserDelegate{ /* background */ + if(bgImage != nil) { + + createBackground(bgImage!) + + } + + + //MARK: TOMORROW @@ -614,6 +624,35 @@ class GameScene: SKScene, SKPhysicsContactDelegate, NSXMLParserDelegate{ let cameraPositionInScene:CGPoint = self.convertPoint(node.position, fromNode: mazeWorld!) mazeWorld!.position = CGPoint(x: mazeWorld!.position.x - cameraPositionInScene.x, y: mazeWorld!.position.y - cameraPositionInScene.y) + + /* handle parallax */ + + if (parallaxOffset.x != 0) { + + if ( Int(cameraPositionInScene.x) < 0 ) { + + parallaxBG!.position = CGPoint(x: parallaxBG!.position.x + parallaxOffset.x, y: parallaxBG!.position.y) + + } else if ( Int(cameraPositionInScene.x) > 0 ) { + + parallaxBG!.position = CGPoint(x: parallaxBG!.position.x - parallaxOffset.x, y: parallaxBG!.position.y) + } + + } + + if (parallaxOffset.y != 0) { + + if ( Int(cameraPositionInScene.y) < 0 ) { + + parallaxBG!.position = CGPoint(x: parallaxBG!.position.x, y: parallaxBG!.position.y + parallaxOffset.y) + + } else if ( Int(cameraPositionInScene.y) > 0 ) { + + parallaxBG!.position = CGPoint(x: parallaxBG!.position.x, y: parallaxBG!.position.y - parallaxOffset.y) + } + + } + } //MARK: ENEMY STUFF @@ -832,6 +871,14 @@ class GameScene: SKScene, SKPhysicsContactDelegate, NSXMLParserDelegate{ } } - + + + func createBackground(image:String) { + + parallaxBG = SKSpriteNode(imageNamed: image) + mazeWorld!.addChild(parallaxBG!) + parallaxBG!.position = CGPoint(x: parallaxBG!.size.width / 2, y: -parallaxBG!.size.height / 2) + parallaxBG!.alpha = 0.5 + } } diff --git a/Xmaze/Xmaze/Images.xcassets/star_field.imageset/Contents.json b/Xmaze/Xmaze/Images.xcassets/star_field.imageset/Contents.json new file mode 100644 index 0000000..aff46ca --- /dev/null +++ b/Xmaze/Xmaze/Images.xcassets/star_field.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "star_filed.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Xmaze/Xmaze/Images.xcassets/star_field.imageset/star_filed.png b/Xmaze/Xmaze/Images.xcassets/star_field.imageset/star_filed.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc71c0e903b302c8d3deac77289b76c4faa73a8 GIT binary patch literal 29830 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 V7(CH~8+hcsmb#u=!R0$a{{T1#nK=Le literal 0 HcmV?d00001