Skip to content

Juegos #4

@santiago007-ai

Description

@santiago007-ai

import SpriteKit

class GameScene: SKScene, SKPhysicsContactDelegate {
var player: SKSpriteNode!
var scoreLabel: SKLabelNode!
var score = 0 {
didSet {
scoreLabel.text = "Score: (score)"
}
}

override func didMove(to view: SKView) {
    physicsWorld.contactDelegate = self
    backgroundColor = .black
    setupPlayer()
    setupScoreLabel()
    startEnemySpawn()
}

func setupPlayer() {
    player = SKSpriteNode(imageNamed: "player")
    player.position = CGPoint(x: size.width / 2, y: 100)
    player.setScale(0.5)
    player.physicsBody = SKPhysicsBody(rectangleOf: player.size)
    player.physicsBody?.isDynamic = false
    player.name = "player"
    addChild(player)
}

func setupScoreLabel() {
    scoreLabel = SKLabelNode(fontNamed: "Arial")
    scoreLabel.text = "Score: 0"
    scoreLabel.fontSize = 24
    scoreLabel.fontColor = .white
    scoreLabel.position = CGPoint(x: size.width / 2, y: size.height - 50)
    addChild(scoreLabel)
}

func startEnemySpawn() {
    let spawn = SKAction.run { self.createEnemy() }
    let wait = SKAction.wait(forDuration: 1.5)
    let sequence = SKAction.sequence([spawn, wait])
    let repeatForever = SKAction.repeatForever(sequence)
    run(repeatForever)
}

func createEnemy() {
    let enemy = SKSpriteNode(imageNamed: "enemy")
    let xPosition = CGFloat.random(in: 50...(size.width - 50))
    enemy.position = CGPoint(x: xPosition, y: size.height)
    enemy.setScale(0.5)
    enemy.physicsBody = SKPhysicsBody(rectangleOf: enemy.size)
    enemy.physicsBody?.velocity = CGVector(dx: 0, dy: -200)
    enemy.physicsBody?.linearDamping = 0
    enemy.physicsBody?.categoryBitMask = 2
    enemy.name = "enemy"
    addChild(enemy)
}

func fireBullet() {
    let bullet = SKSpriteNode(color: .yellow, size: CGSize(width: 5, height: 20))
    bullet.position = player.position
    bullet.physicsBody = SKPhysicsBody(rectangleOf: bullet.size)
    bullet.physicsBody?.velocity = CGVector(dx: 0, dy: 300)
    bullet.physicsBody?.linearDamping = 0
    bullet.physicsBody?.categoryBitMask = 1
    bullet.name = "bullet"
    addChild(bullet)
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let location = touch.location(in: self)
        let move = SKAction.moveTo(x: location.x, duration: 0.2)
        player.run(move)
        fireBullet()
    }
}

override func update(_ currentTime: TimeInterval) {
    for node in children {
        if node.position.y < 0 {
            node.removeFromParent()
        }
    }
}

func didBegin(_ contact: SKPhysicsContact) {
    if let bullet = contact.bodyA.node as? SKSpriteNode,
       let enemy = contact.bodyB.node as? SKSpriteNode {
        bullet.removeFromParent()
        enemy.removeFromParent()
        score += 10
    }
}

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions