Advertisement
SergioRP

SpriteCreate

Feb 18th, 2016
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.96 KB | None | 0 0
  1. //
  2. //  SpriteCreate.swift
  3. //  Spacebit
  4. //
  5. //  Created by Sergio Toledo Piza on 11/2/16.
  6. //  Copyright © 2016 Prism Studios. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10. import SpriteKit
  11.  
  12. class SpriteCreate {
  13.    
  14.     var sprite = SKSpriteNode()
  15.     var spriteImage = String()
  16.     var spriteType = String()
  17.    
  18.     var firstX = CGFloat()
  19.     var lastX = CGFloat()
  20.     var midX = CGFloat()
  21.    
  22.     var higherY = CGFloat()
  23.     var lowerY = CGFloat()
  24.     var midY = CGFloat()
  25.    
  26.     var repeatedNodeLastX = [CGFloat]()
  27.    
  28.     init(spriteImage: String, type: String, scale: CGFloat, position: CGPoint, customSize: CGSize = CGSize(width: 1, height: 1)) {
  29.        
  30.         if (spriteImage.lowercaseString != "particle") {
  31.             self.sprite = SKSpriteNode(imageNamed: spriteImage)
  32.             self.spriteImage = spriteImage
  33.         } else {
  34.             self.sprite.size = customSize
  35.         }
  36.        
  37.         self.sprite.setScale(scale)
  38.         self.sprite.position = position
  39.         self.sprite.position.x += self.sprite.frame.width / 2
  40.         self.sprite.position.y += self.sprite.frame.height / 2
  41.        
  42.         self.spriteType = type.lowercaseString
  43.        
  44.         firstX = position.x
  45.         lastX = firstX + self.sprite.frame.width
  46.         midX = (firstX + lastX) / 2
  47.        
  48.         higherY = position.y + self.sprite.frame.height
  49.         lowerY = position.y
  50.         midY = lowerY + self.sprite.frame.height / 2
  51.                
  52.         self.addPhysics(self.spriteType, object: self.sprite)
  53.        
  54.         repeatedNodeLastX.append(lastX)
  55.        
  56.     }
  57.    
  58.     func addPhysics(type: String, object: SKSpriteNode) {
  59.         switch self.spriteType {
  60.             case "ground":
  61.                
  62.                 object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
  63.                 object.physicsBody?.categoryBitMask = PhysicsCategory.Ground
  64.                 object.physicsBody?.collisionBitMask = PhysicsCategory.Player
  65.                 object.physicsBody?.contactTestBitMask = PhysicsCategory.Player
  66.                 object.physicsBody?.affectedByGravity = false
  67.                 object.physicsBody?.dynamic = false
  68.                 object.physicsBody?.restitution = 0
  69.                 break
  70.            
  71.             case "wall":
  72.                 object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
  73.                 object.physicsBody?.categoryBitMask = PhysicsCategory.Wall
  74.                 object.physicsBody?.collisionBitMask = PhysicsCategory.Player
  75.                 object.physicsBody?.contactTestBitMask = PhysicsCategory.Player | PhysicsCategory.Bullet
  76.                 object.physicsBody?.affectedByGravity = false
  77.                 object.physicsBody?.dynamic = false
  78.                 object.physicsBody?.restitution = 0
  79.                 break
  80.            
  81.             case "lava":
  82.                 let emitter = SKEmitterNode(fileNamed: "Lava.sks")!
  83.                 emitter.particlePositionRange = CGVector(dx: object.frame.width, dy: 0.0)
  84.                 emitter.advanceSimulationTime(3.0)
  85.                 emitter.zPosition = 5
  86.                
  87.                 object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
  88.                 object.physicsBody?.categoryBitMask = PhysicsCategory.Lava
  89.                 object.physicsBody?.collisionBitMask = PhysicsCategory.Player
  90.                 object.physicsBody?.contactTestBitMask = PhysicsCategory.Player
  91.                 object.physicsBody?.affectedByGravity = false
  92.                 object.physicsBody?.dynamic = false
  93.                 object.addChild(emitter)
  94.                 break
  95.            
  96.             default:
  97.                 break
  98.         }
  99.     }
  100.    
  101.     func repeatSprite(times: Int, direction: String) {
  102.        
  103.         for i in 1...times {
  104.             let spriteChild = SKSpriteNode(imageNamed: self.spriteImage)
  105.             let xPosValue = (self.sprite.frame.width / (self.sprite.xScale)) * CGFloat(i)
  106.             let yPosValue = (self.sprite.frame.height / (self.sprite.yScale)) * CGFloat(i)
  107.             var xPos = CGFloat()
  108.             var yPos = CGFloat()
  109.            
  110.             switch(direction) {
  111.                 case "^", "ˆ":
  112.                     xPos = 0
  113.                     yPos = yPosValue
  114.                     break
  115.                
  116.                 case "<":
  117.                     xPos = -xPosValue
  118.                     yPos = 0
  119.                     break
  120.                
  121.                 case "v", "V":
  122.                     xPos = 0
  123.                     yPos = -yPosValue
  124.                     break
  125.                
  126.                 default: // case ">":
  127.                     xPos = xPosValue
  128.                     yPos = 0
  129.                     lastX = xPos * self.sprite.xScale + self.sprite.frame.width + firstX
  130.                     repeatedNodeLastX.append(lastX)
  131.                     break
  132.             }
  133.            
  134.            
  135.             spriteChild.position = CGPoint(x: xPos, y: yPos)
  136.             self.addPhysics(self.spriteType, object: spriteChild)
  137.             self.sprite.addChild(spriteChild)
  138.         }
  139.        
  140.     }
  141.    
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement