【发布时间】:2014-08-11 20:35:51
【问题描述】:
我正在创建一个游戏,您必须用彩弹枪射击从天上掉下来的不同敌人,“彩弹”是一种随机颜色,其中彩弹来自继承自 SKShapeNode 的类。当彩弹击中敌人时,我想创建一个飞溅动画,如果每个颜色相同,这样做会很简单。如何运行帧颜色继承原始项目符号颜色的动画?或者我可以使用 SKEmitterNode 类以某种方式进行类似的操作吗?
这里是 Bullet 类和 addBullet 类
class Bullet:SKShapeNode {
var color:SKColor?
var dx:CGFloat?
var dy:CGFloat?
var move:SKAction {
get {
if dx != nil && dy != nil {
return SKAction.moveByX(dx!, y: dy!, duration: 0.4)
} else {
return SKAction.moveByX(0, y: 0, duration: 0)
}
}
}
required override init() {
super.init()
let circle = CGRectMake(0, 0, 40, 40)
self.antialiased = true
self.setScale(0.5)
self.path = UIBezierPath(ovalInRect: circle).CGPath
self.lineWidth = 1
self.color = Random.randomColor()
if let c = self.color {
self.fillColor = c
self.strokeColor = c
} else {
self.fillColor = SKColor.whiteColor()
self.strokeColor = SKColor.whiteColor()
}
self.physicsBody = SKPhysicsBody(circleOfRadius: circle.width/2)
self.physicsBody.affectedByGravity = false
self.physicsBody.categoryBitMask = Collision.bulletCategory
self.physicsBody.contactTestBitMask = Collision.enemyCategory
}
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
}
func generateBullet(loc:CGPoint) {
let dx = loc.x - self.player.position.x
let dy = loc.y - self.player.position.y
let norm = CGVectorMake(dx, dy).normalize()
let b = Bullet()
b.dx = norm.dx * 600
b.dy = norm.dy * 600
let height = self.player.size.height/4
b.position = CGPointMake(self.player.position.x + norm.dx * height, self.player.position.y + norm.dy * height)
self.addChild(b)
b.runAction(b.move, completion: {
b.removeFromParent();
})
}
【问题讨论】:
标签: swift sprite-kit xcode6