2016-03-07 73 views
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) 
} 
+0

你確定敵人不只是在正在被裁剪的區域產卵,還有,你想使用frame.width,而不是frame.height,因爲身高>寬度,你的敵人又是在一個不在屏幕上的區域 – Knight0fDragon

+0

@AliMahdi這個:'enemy.physicsBody?.affectedByGravity = true'與這個結合:'enemy.runAction(enmyact)'會產生非常奇怪的結果。我不知道你是怎麼沒有注意到你自己呢?敵人擁有一個充滿活力的身體,受重力影響,意味着物理世界將對這個身體施加一定的力量(並將其拉向某個方向)。同時,你正在使用SKAction來移動你想要的敵人。這將打破物理模擬,你將有一個錯誤的敵人運動。我想,你想讓敵人不受重力影響。 – Whirlwind

回答

0

反轉的爭論中CGPointMake

enemy.position = CGPointMake(self.frame.size.width/16, CGFloat(Pos)) 
+1

這意味着敵人的位置是靜態的self.frame.size.width/16,他的評論說他正在尋找'//應該在屏幕寬度內選擇隨機點' – Knight0fDragon