/* |
Copyright (C) 2014 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
|
Abstract: |
|
Defines the warrior hero class |
|
*/ |
|
|
import SpriteKit |
|
var sSharedProjectile = SKSpriteNode() |
var sSharedProjectileEmitter = SKEmitterNode() |
let kProjectileCollisionRadius: CGFloat = 15.0 |
|
var kLoadSharedWarriorAssetsOnceToken: dispatch_once_t = 0 |
|
class Warrior: HeroCharacter { |
// MARK: Initializers |
|
convenience init(atPosition position: CGPoint, withPlayer player: Player) { |
let atlas = SKTextureAtlas(named: "Warrior_Idle") |
let texture = atlas.textureNamed("warrior_idle_0001.png") |
|
self.init(atPosition:position, withTexture: texture, player:player) |
} |
|
// MARK: Setup |
|
override func projectile() -> SKSpriteNode { |
return sSharedProjectile |
} |
|
override func projectileEmitter() -> SKEmitterNode { |
return sSharedProjectileEmitter |
} |
|
// MARK: Asset Pre-loading |
|
class func loadSharedAssets() { |
dispatch_once(&kLoadSharedWarriorAssetsOnceToken) { |
let atlas = SKTextureAtlas(named: "Environment") |
|
self.idleAnimationFrames = loadFramesFromAtlasWithName("Warrior_Idle") |
self.walkAnimationFrames = loadFramesFromAtlasWithName("Warrior_Walk") |
self.attackAnimationFrames = loadFramesFromAtlasWithName("Warrior_Attack") |
self.getHitAnimationFrames = loadFramesFromAtlasWithName("Warrior_GetHit") |
self.deathAnimationFrames = loadFramesFromAtlasWithName("Warrior_Death") |
|
sSharedProjectile = SKSpriteNode(texture: atlas.textureNamed("warrior_throw_hammer.png")) |
sSharedProjectile.name = "Projectile" |
|
// Assign the physics body; unwrap the physics body to configure it. |
sSharedProjectile.physicsBody = SKPhysicsBody(circleOfRadius: kProjectileCollisionRadius) |
sSharedProjectile.physicsBody!.categoryBitMask = ColliderType.Projectile.rawValue |
sSharedProjectile.physicsBody!.collisionBitMask = ColliderType.Wall.rawValue |
sSharedProjectile.physicsBody!.contactTestBitMask = sSharedProjectile.physicsBody!.collisionBitMask |
|
sSharedProjectileEmitter = NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource("WarriorProjectile", ofType: "sks")!) as SKEmitterNode |
} |
} |
} |