2016-03-07 40 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