我目前正在创建一个新游戏,其中包含两个不同的球/气泡(一个玩家和一个敌人)。我试图让这两个人在不同的时间随机产生类似的东西(例如玩家,敌人,玩家,玩家等等(不是任何顺序))但随机游戏继续进行和之后玩家重新开始游戏。我在寻找解决方案时遇到了麻烦。我尝试过一个开关盒,但每个游戏只会产生玩家或敌人。有没有人有办法解决吗?如果需要任何其他代码,我将提供它。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
if (gamestarted == false) {
gamestarted = true
/*Player and Enemy random spawner*/
ballSwitchCase()
/*Tap to start*/
tts.removeFromParent()
} else {
/*removed unnecessary code for question*/
}
func mainBallSpawner() {
/*Main ball*/
let spawn = SKAction.runBlock({
()in
self.creatingTheBall()
})
let delay = SKAction.waitForDuration(3.0)
let spawnDelay = SKAction.sequence([spawn, delay])
let spawnDelayForever = SKAction.repeatActionForever(spawnDelay)
self.runAction(spawnDelayForever, withKey: "spawnDelayForever")
let distance = CGFloat(self.frame.height + 170 + gameBall.frame.width)
let moveBalls = SKAction.moveToY(-distance, duration: NSTimeInterval(0.008 * distance))
let removeBalls = SKAction.removeFromParent()
moveAndRemoveBalls = SKAction.sequence([moveBalls, removeBalls])
}
func enemySpawner() {
/*Enemy*/
let spawnEnemy = SKAction.runBlock({
()in
self.creatingEnemyBall()
})
let delayEnemy = SKAction.waitForDuration(3.0)
let spawnDelayEnemy = SKAction.sequence([spawnEnemy, delayEnemy])
let spawnDelayEnemyForever = SKAction.repeatActionForever(spawnDelayEnemy)
self.runAction(spawnDelayEnemyForever, withKey: "spawnDelayEnemyForever")
let enemyDistance = CGFloat(self.frame.height + 170 + enemyBall.frame.width)
let moveEnemy = SKAction.moveToY(-enemyDistance, duration: NSTimeInterval(0.008 * enemyDistance))
let removeEnemy = SKAction.removeFromParent()
moveAndRemoveEnemy = SKAction.sequence([moveEnemy, removeEnemy])
}
func ballSwitchCase() {
let spawnRandomBall = arc4random_uniform(2)
switch spawnRandomBall {
case 0:
mainBallSpawner()
break
case 1:
enemySpawner()
break
default:
break
}
}
答案 0 :(得分:1)
您的代码可以更简单
import SpriteKit
class GameScene: SKScene {
private var gameStarted = false
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard !gameStarted else { return }
gameStarted = true
beginCreatingSprites()
}
private func beginCreatingSprites() {
let addSomething = SKAction.runBlock { [weak self] in
if arc4random_uniform(2) == 0 {
self?.addBall()
} else {
self?.addEnemy()
}
}
let wait = SKAction.waitForDuration(3)
let sequence = SKAction.sequence([addSomething, wait])
let repeatForever = SKAction.repeatActionForever(sequence)
self.runAction(repeatForever)
}
private func addBall() {
let ball = SKSpriteNode(imageNamed: "ball")
// set position etc...
self.addChild(ball)
}
private func addEnemy() {
let enemy = SKSpriteNode(imageNamed: "enemy")
// set position etc...
self.addChild(enemy)
}
}