2016-07-03 2 views
0

У меня есть игра, в которой объект случайно падает с верхней части экрана на нижнюю часть. Я хочу, чтобы он был там, где, если объект прослушивается, я могу сказать, что он что-то делает, например, добавляет очки в партитуру.Swift: обнаружить, когда SKSpriteNode даже коснулся

Можете ли вы помочь мне попытаться понять это? Я буду отвечать на любые вопросы, если у вас их будет. Вот код, я использую:

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])) 



} 

ответ

0

Посмотрите на «Перемещение карты вокруг Совета» в следующем уроке: Ray Wenderlicht SpriteKit Tutorial.

Затем прочитайте немного больше об обработке событий касания в iOS (например, Handling Touches...).

Затем попробуйте что-нибудь в коде, и если вы застряли в постаменте, задайте более конкретный вопрос - потому что этот слишком общий.

+0

Хорошо, я попробую! – Nickolans

+0

Большое вам спасибо! Я занимаюсь этой проблемой в течение нескольких дней, и это исправлено! – Nickolans

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