خرید بک لینک

Vote count: 0

I have a problem in my code.

I'm creating a Game and I need to have a sprite that can appear multiple times at the same time, to do so I created a class so I can do addChild(obstacle) multiple times and it will spawn one SKSpriteNode exactly similar to another.

My problem is that I want to check collision between my player and the obstacle but because it's from the same SKSpriteNode the computer can't know of which obstacle I'm talking about.

Here's how I created the player and the obstacle :

import SpriteKit

class Obstacle: SKSpriteNode {

    init() {
        let obstacleTexture = SKTexture(imageNamed: "obstacle")
        super.init(texture: obstacleTexture, color: UIColor.clearColor(), size: CGSize(width: 80, height: 80))
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

class GameScene: SKScene {

    var player:SKSpriteNode!

    override func didMoveToView(view: SKView) {

        //player setup
        let playerTexture = SKTexture(imageNamed: "player")
        player = SKSpriteNode(texture: playerTexture)
        player.position = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.2)

    }

    //how I spawn an obstacle
    func spawnObstacle() {

        let obstacle = Obstacle()

        //obstacle position setup
        obstacle.position.x = CGFloat(arc4random()) % self.frame.size.width
        obstacle.position.y = self.frame.size.height + 200

        //random spin action setup
        var rotateObstacle = SKAction.rotateByAngle(CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))

        if random() % 2 == 0 {
            rotateObstacle = SKAction.rotateByAngle(CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))
        }else{
            rotateObstacle = SKAction.rotateByAngle(-CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))
        }

        let rotateObstacleForever = SKAction.repeatActionForever(rotateObstacle)

        //random move action setup
        let moveObstacle = SKAction.moveTo(CGPointMake(CGFloat(arc4random()) % self.frame.size.width, -200), duration: Double((drand48() + 1) * 1.5))

        //ruing the actions
        obstacle.runAction(rotateObstacleForever)
        obstacle.runAction(moveObstacle)

        addChild(obstacle)

    }

}

}

Do you have any to detect when the player collide with any obstacle ?

Thanks, Ben

If my english is bad it's because I'm French.

asked 43 secs ago

- - , .
.

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 21 تير 1395 ساعت: 0:20

صفحه بندی