Враг не будет стрелять пулями Свифт - PullRequest
0 голосов
/ 16 марта 2019

Я написал, что мой класс пули объявил все, что нужно записать, и я получаю информацию о враге и его позиции из метода setupEnemy, но пуля никогда не появляется.

func firedBullet () {

    let enemy = spawnEnemy()

    let bullet = SKSpriteNode(imageNamed: "enemyBullet")
    bullet.name = "enemyBul"
    bullet.setScale(1)
    bullet.position = CGPoint(x:enemy.position.x,y:enemy.position.y)
    bullet.zPosition = 1
    bullet.physicsBody = SKPhysicsBody(rectangleOf: bullet.size)
    bullet.physicsBody!.affectedByGravity = true
    bullet.physicsBody!.isDynamic = false
    bullet.physicsBody!.categoryBitMask = 3
    bullet.physicsBody!.collisionBitMask = 0
    bullet.physicsBody!.contactTestBitMask = 2
    self.addChild(bullet)

    let moveBullet = SKAction.moveTo(y: self.size.height + 100, duration: 1)
    let deleteBullet = SKAction.removeFromParent()
    let bulletSequence = SKAction.sequence([moveBullet,deleteBullet])
    bullet.run(bulletSequence)

}

Это мой вражеский класс, не появляется никаких ошибок, указывающих на любую ошибку кодирования, которая должна быть устранена, но враг никогда не выстрелил в сторону игрока.

var врагов: [SKSpriteNode] = []

func spawnEnemy() -> SKSpriteNode{

    let enemy = SKSpriteNode(imageNamed: "enemyShip")
    enemy.setScale(1)
    enemy.zPosition = 2
    enemy.name = "Enemy"
    enemy.physicsBody = SKPhysicsBody(rectangleOf: enemy.size)
    enemy.physicsBody!.affectedByGravity = false
    enemy.physicsBody!.categoryBitMask = 2
    enemy.physicsBody!.collisionBitMask = 0
    enemy.physicsBody!.contactTestBitMask = 1 | 3

    return enemy

}

func setupEnemy() {

    let enemy = spawnEnemy()

    let randomXStart = random(min: gameArea.minX, max: gameArea.maxX)
    let randomXEnd = random(min: gameArea.minX, max: gameArea.maxX)

    let startPoint = CGPoint(x: randomXStart, y: self.size.height * 1.2)
    let endPoint = CGPoint(x: randomXEnd, y: -self.size.height * 0.2)

    enemy.position = startPoint

    let moveEnemy = SKAction.move(to: endPoint, duration: 1.5)
    let deleteEnemy = SKAction.removeFromParent()
    let enemySequence = SKAction.sequence([moveEnemy, deleteEnemy])

    if currentGameState == gameState.inGame{
        enemy.run(enemySequence)
    }

    let dx = endPoint.x - startPoint.x
    let dy = endPoint.y - startPoint.y
    let amountToRotate = atan2(dy,dx)
    enemy.zRotation = amountToRotate

    self.addChild(enemy)

    enemies.append(enemy)

}

...