2016-07-03 7 views
0

Ich habe ein Spiel, wo ein Objekt vom oberen Rand des Bildschirms nach unten zufällig fällt. Ich möchte es wo haben, wenn das Objekt angezapft wird, kann ich ihm sagen, etwas zu tun, wie Punkte zur Partitur hinzuzufügen.Swift: Erkennen, wenn SKSpriteNode hat sogar berührt

Können Sie mir helfen, das herauszufinden? Ich werde auf alle Fragen antworten, wenn Sie welche haben. Hier ist der Code Ich verwende:

class GameSceneTest: SKScene, SKPhysicsContactDelegate { 



override func didMoveToView(view: SKView) { 
    backgroundColor = SKColor.clearColor() 
    physicsWorld.gravity = CGVectorMake(0, 0) 
    physicsWorld.contactDelegate = self 
    //Change duration 
    runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.runBlock(addObject), SKAction.waitForDuration(1)]) 
     )) 
    //AddMusicHere 
} 

func random() -> CGFloat { 
    return CGFloat(Float(arc4random())/0xFFFFFFFF) 
} 
func random(min min: CGFloat, max: CGFloat) -> CGFloat { 
    return random() * (max - min) + min 
} 

func add Object() { 


    let Object = SKSpriteNode(imageNamed: "Object\(arc4random_uniform(6) + 1).png") 
    Object.userInteractionEnabled = true 
    Object.size = CGSize(width: 50, height: 50) 
    Object.physicsBody = SKPhysicsBody(rectangleOfSize: Object.size) 
    Object.physicsBody?.dynamic = true 

    //Determine where to spawn gem across y axis 
    let actually = random(min: Object.size.width/2, max: size.width - Object.size.width/2) 
    //Position Object slightly off screen along right edge 
    //and along random y axis point 
    //Object.position = CGPoint(x: size.width + Object.size.width/2 , y: actually) 
    Object.position = CGPoint(x: actually, y: size.height + Object.size.height/2) 
    //Add the Object to the scene 
    addChild(Object) 
    //Determines speed of Object (edit later to where speed depends on type of Object) 
    let actualDuration = random(min: CGFloat(4), max: CGFloat(5)) 
    //Create the Actions 
    let actionMove = SKAction.moveTo(CGPoint(x: actually, y: gem.size.height/2), duration: NSTimeInterval(actualDuration)) 
    let actionMoveDone = SKAction.removeFromParent() 
    let loseAction = SKAction.runBlock() { 
     let reveal = SKTransition.flipHorizontalWithDuration(0.5) //Change to flipe vertical 
     let gameOverScene = GameOverScene(size: self.size, won: false) 
     self.view?.presentScene(gameOverScene, transition: reveal) 
    } 



    Object.runAction(SKAction.sequence([actionMove, loseAction, actionMoveDone])) 



} 

Antwort

0

Werfen Sie einen Blick auf „Bewegen der Karten auf dem Brett“ im folgenden Tutorial: Ray Wenderlicht SpriteKit Tutorial.

Dann lesen Sie ein bisschen mehr um Umgang mit Touch-Ereignisse in iOS (z. B. Handling Touches...).

Dann versuchen Sie etwas im Code und wenn Sie stecken bleiben, eine spezifischere Frage - da diese ein wenig zu allgemein ist.

+0

Okay, ich werde es versuchen! – Nickolans

+0

Vielen Dank! Ich habe mich für ein paar Tage mit diesem Problem beschäftigt und das hat es behoben! – Nickolans