【发布时间】:2016-01-27 10:31:08
【问题描述】:
我想按顺序生成敌人。所以为此编写了一个代码,但无法理解为什么只有两个第一个敌人出现在正确的位置,而其余的则在错误的位置产生。这是代码:
func addDoor() {
for i in 0...1 {
let doorSprite = SKSpriteNode(imageNamed: "Door")
doorSprite.name = "door\(i)"
if i == 0 {
doorSprite.position = CGPointMake(self.frame.size.width / 2.0 - 40.0 - doorSprite.frame.size.width, self.frame.size.height - doorSprite.frame.size.height / 2.0)
} else {
doorSprite.position = CGPointMake(self.frame.size.width / 2.0 + 40.0 + doorSprite.frame.size.width, self.frame.size.height - doorSprite.frame.size.height / 2.0)
}
gameLayer.addChild(doorSprite)
}
}
func enemySpawn() {
for i in 0..<15 {
let sprite = Enemy(imageNamed: "Enemy")
sprite.name = "enemy\(i)"
let randDoor = Int(arc4random_uniform(2))
if randDoor == 0 {
if let door = gameLayer.childNodeWithName("door\(randDoor)") {
sprite.position = CGPointMake((door.position.x - door.frame.size.width / 2.0) + spawnPoint(UInt32(door.frame.size.width - sprite.frame.size.width)) + sprite.frame.size.width / 2.0, door.position.y)
}
} else {
if let door = homeLayer.childNodeWithName("door\(randDoor)") {
sprite.position = CGPointMake((door.position.x - door.frame.size.width / 2.0) + spawnPoint(UInt32(door.frame.size.width - sprite.frame.size.width)) + sprite.frame.size.width / 2.0, door.position.y)
}
}
}
enemiesLayer.runAction(SKAction.waitForDuration(NSTimeInterval(i)), completion: {
self.enemiesLayer.addChild(sprite)
})
}
}
func spawnPoint(num: UInt32) -> CGFloat {
let randomSpawn: CGFloat = CGFloat(arc4random_uniform(num))
return randomSpawn
}
【问题讨论】:
-
无法从您的代码中分辨出“正确”或“错误”的位置。
-
第一种方法在场景中添加两个门。然后我想在其中一扇门上依次生成敌人。所以在第二个函数中只向门添加了两个敌人,其余的出现在 CGPointMake(0.0, 0.0) 中,不过它应该出现在门所在的位置。
-
出了点问题,'if let door = gameLayer.childNodeWithName("door(randDoor)")' 中的可选绑定
标签: ios swift sprite-kit swift2 sprite