Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // SpriteCreate.swift
- // Spacebit
- //
- // Created by Sergio Toledo Piza on 11/2/16.
- // Copyright © 2016 Prism Studios. All rights reserved.
- //
- import Foundation
- import SpriteKit
- class SpriteCreate {
- var sprite = SKSpriteNode()
- var spriteImage = String()
- var spriteType = String()
- var firstX = CGFloat()
- var lastX = CGFloat()
- var midX = CGFloat()
- var higherY = CGFloat()
- var lowerY = CGFloat()
- var midY = CGFloat()
- var repeatedNodeLastX = [CGFloat]()
- init(spriteImage: String, type: String, scale: CGFloat, position: CGPoint, customSize: CGSize = CGSize(width: 1, height: 1)) {
- if (spriteImage.lowercaseString != "particle") {
- self.sprite = SKSpriteNode(imageNamed: spriteImage)
- self.spriteImage = spriteImage
- } else {
- self.sprite.size = customSize
- }
- self.sprite.setScale(scale)
- self.sprite.position = position
- self.sprite.position.x += self.sprite.frame.width / 2
- self.sprite.position.y += self.sprite.frame.height / 2
- self.spriteType = type.lowercaseString
- firstX = position.x
- lastX = firstX + self.sprite.frame.width
- midX = (firstX + lastX) / 2
- higherY = position.y + self.sprite.frame.height
- lowerY = position.y
- midY = lowerY + self.sprite.frame.height / 2
- self.addPhysics(self.spriteType, object: self.sprite)
- repeatedNodeLastX.append(lastX)
- }
- func addPhysics(type: String, object: SKSpriteNode) {
- switch self.spriteType {
- case "ground":
- object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
- object.physicsBody?.categoryBitMask = PhysicsCategory.Ground
- object.physicsBody?.collisionBitMask = PhysicsCategory.Player
- object.physicsBody?.contactTestBitMask = PhysicsCategory.Player
- object.physicsBody?.affectedByGravity = false
- object.physicsBody?.dynamic = false
- object.physicsBody?.restitution = 0
- break
- case "wall":
- object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
- object.physicsBody?.categoryBitMask = PhysicsCategory.Wall
- object.physicsBody?.collisionBitMask = PhysicsCategory.Player
- object.physicsBody?.contactTestBitMask = PhysicsCategory.Player | PhysicsCategory.Bullet
- object.physicsBody?.affectedByGravity = false
- object.physicsBody?.dynamic = false
- object.physicsBody?.restitution = 0
- break
- case "lava":
- let emitter = SKEmitterNode(fileNamed: "Lava.sks")!
- emitter.particlePositionRange = CGVector(dx: object.frame.width, dy: 0.0)
- emitter.advanceSimulationTime(3.0)
- emitter.zPosition = 5
- object.physicsBody = SKPhysicsBody(rectangleOfSize: object.size)
- object.physicsBody?.categoryBitMask = PhysicsCategory.Lava
- object.physicsBody?.collisionBitMask = PhysicsCategory.Player
- object.physicsBody?.contactTestBitMask = PhysicsCategory.Player
- object.physicsBody?.affectedByGravity = false
- object.physicsBody?.dynamic = false
- object.addChild(emitter)
- break
- default:
- break
- }
- }
- func repeatSprite(times: Int, direction: String) {
- for i in 1...times {
- let spriteChild = SKSpriteNode(imageNamed: self.spriteImage)
- let xPosValue = (self.sprite.frame.width / (self.sprite.xScale)) * CGFloat(i)
- let yPosValue = (self.sprite.frame.height / (self.sprite.yScale)) * CGFloat(i)
- var xPos = CGFloat()
- var yPos = CGFloat()
- switch(direction) {
- case "^", "ˆ":
- xPos = 0
- yPos = yPosValue
- break
- case "<":
- xPos = -xPosValue
- yPos = 0
- break
- case "v", "V":
- xPos = 0
- yPos = -yPosValue
- break
- default: // case ">":
- xPos = xPosValue
- yPos = 0
- lastX = xPos * self.sprite.xScale + self.sprite.frame.width + firstX
- repeatedNodeLastX.append(lastX)
- break
- }
- spriteChild.position = CGPoint(x: xPos, y: yPos)
- self.addPhysics(self.spriteType, object: spriteChild)
- self.sprite.addChild(spriteChild)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement