【发布时间】:2015-10-31 09:21:03
【问题描述】:
在我的程序中,我有一个名为 addObstacle 的方法,它创建一个带有 SKPhysicsBody 和向左速度的矩形 SKShapeNode。
func addObstacle(bottom: CGFloat, top: CGFloat, width: CGFloat){
let obstacleRect = CGRectMake(self.size.width + 100, bottom, width, (top - bottom))
let obstacle = SKShapeNode(rect: obstacleRect)
obstacle.name = "obstacleNode"
obstacle.fillColor = UIColor.grayColor()
obstacle.physicsBody = SKPhysicsBody(edgeLoopFromPath: obstacle.path!)
obstacle.physicsBody?.dynamic = false
obstacle.physicsBody?.affectedByGravity = false
obstacle.physicsBody?.contactTestBitMask = PhysicsCatagory.Ball
obstacle.physicsBody?.categoryBitMask = PhysicsCatagory.Obstacle
obstacle.physicsBody?.usesPreciseCollisionDetection = true
self.addChild(obstacle)
obstacle.runAction(SKAction.moveBy(obstacleVector, duration: obstacleSpeed))
}
在一个名为 endGame 的单独方法中,我想淡出屏幕上当前存在的所有障碍。所有障碍物对象都是私有的,这使得访问它们的属性变得困难。如果屏幕上只有一个,我通常可以通过它的名称访问它。然而,当我说childNodeWithName("obstacleNode")?.runAction(SKAction.fadeAlphaBy(-1.0, duration: 1.0)) 时,只有一个“障碍”消失了;其余部分保持完全不透明。有没有这样做的好方法?在此先感谢(:
【问题讨论】:
标签: swift sprite-kit alpha skaction skshapenode