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

Reverse аргументы в CGPointMake.

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

Это означает, что положение врага статически на self.frame.size.width/16, его комментарий говорит, что он ищет '// предполагается выбрать случайную точку в ширине экрана' – Knight0fDragon

Смежные вопросы