1
我正在研究我的遊戲,但是當我嘗試從所說的產卵敵人時,我會面臨一個問題,我只能從場景的頂部和底部產生他們,我不知道爲什麼從側面產生敵人Sprite-kit
這是我的計時器:
override func didMoveToView(view: SKView) {
initialzeGame()
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("spawnEnemy"), userInfo: nil, repeats: true)
}
這是休息:
func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat {
return CGFloat(arc4random())/CGFloat(UINT32_MAX) * abs(firstNum + secondNum) + min(firstNum, secondNum)
}
func spawnEnemy() {
//supposed to pick random point within the screen width
let Pos = randomBetweenNumbers(0, secondNum: frame.height)
//let PosTwo = randomBetweenNumbers(0, secondNum: frame.height)
let enemy = SKSpriteNode(imageNamed: "zombie") //create a new enemy each time
enemy.position = CGPointMake(CGFloat(Pos), self.frame.size.width/16)
enemy.physicsBody = SKPhysicsBody(circleOfRadius: 7)
enemy.physicsBody?.affectedByGravity = true
enemy.physicsBody?.categoryBitMask = 0
enemy.physicsBody?.contactTestBitMask = 1
enemy.size = CGSize(width: 80, height: 70)
let enmyact = SKAction.moveTo(hero.position, duration: 2)
enemy.runAction(enmyact)
addChild(enemy)
}
你確定敵人不只是在正在被裁剪的區域產卵,還有,你想使用frame.width,而不是frame.height,因爲身高>寬度,你的敵人又是在一個不在屏幕上的區域 – Knight0fDragon
@AliMahdi這個:'enemy.physicsBody?.affectedByGravity = true'與這個結合:'enemy.runAction(enmyact)'會產生非常奇怪的結果。我不知道你是怎麼沒有注意到你自己呢?敵人擁有一個充滿活力的身體,受重力影響,意味着物理世界將對這個身體施加一定的力量(並將其拉向某個方向)。同時,你正在使用SKAction來移動你想要的敵人。這將打破物理模擬,你將有一個錯誤的敵人運動。我想,你想讓敵人不受重力影響。 – Whirlwind