使用未解析的标识符。 (没有意义)

时间:2016-04-11 03:11:15

标签: xcode swift sprite-kit

我在swift中使用Sprite Kit进行游戏,其中有物体从屏幕下方落下,需要被底部的玩家(Labeled Person)捕获。我正在尝试在接触播放器时从屏幕上移除掉落的物体,但是我无法调用功能内部的坠落物体(标记为冰)确实开始接触。我可以调用其他对象,如人物或分数标签,但不能调用掉落在屏幕上的物体(Labeled Ice)。为什么我会在下面发布我的完整代码。这真让我烦恼。 (ps。我收到错误"使用未解析的标识符")

import SpriteKit



struct physicsCatagory {
    static let person : UInt32 = 0x1 << 1
    static let Ice : UInt32 = 0x1 << 2
    static let IceTwo : UInt32 = 0x1 << 3
    static let IceThree : UInt32 = 0x1 << 4
    static let Score : UInt32 = 0x1 << 5
}


class GameScene: SKScene, SKPhysicsContactDelegate {


   var scorenumber = Int()
    var person = SKSpriteNode(imageNamed: "Person")
    let Score = SKSpriteNode()
    var ScoreLable = SKLabelNode()


    override func didMoveToView(view: SKView) {

        self.scene?.backgroundColor = UIColor.purpleColor()

        physicsWorld.contactDelegate = self

        self.scene?.size = CGSize(width: 640, height: 1136)



         Score.size = CGSize(width: 648, height: 1)
        Score.position = CGPoint(x: 320, y: -90)
        Score.physicsBody = SKPhysicsBody(rectangleOfSize: Score.size)
        Score.physicsBody?.affectedByGravity = false
        Score.physicsBody?.dynamic = false
        Score.physicsBody?.categoryBitMask = physicsCatagory.Score
        Score.physicsBody?.collisionBitMask = 0
        Score.physicsBody?.contactTestBitMask = physicsCatagory.IceThree
        Score.color = SKColor.blueColor()
        self.addChild(Score)




        person.position = CGPointMake(self.size.width/2, self.size.height/12)
        person.setScale(0.4)
        person.physicsBody = SKPhysicsBody(rectangleOfSize: person.size)
        person.physicsBody?.affectedByGravity = false
        person.physicsBody?.categoryBitMask = physicsCatagory.person
        person.physicsBody?.contactTestBitMask = physicsCatagory.Ice
        person.physicsBody?.collisionBitMask = physicsCatagory.Ice
        person.physicsBody?.dynamic = false




        ScoreLable.position = CGPoint(x: self.frame.width / 2, y: 1000)
        ScoreLable.text = "\(scorenumber)"
        ScoreLable.fontColor = UIColor.yellowColor()
        ScoreLable.fontSize = 100
        ScoreLable.fontName = "Zapfino "
        self.addChild(ScoreLable)



        var IceThreeTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: ("spawnThirdIce"), userInfo: nil, repeats: true)


        self.addChild(person)





    }




     func didBeginContact(contact: SKPhysicsContact) {
            let firstBody = contact.bodyA
            let secondBody = contact.bodyB


        if firstBody.categoryBitMask == physicsCatagory.person && secondBody.categoryBitMask == physicsCatagory.IceThree || firstBody.categoryBitMask == physicsCatagory.IceThree && secondBody.categoryBitMask == physicsCatagory.person{

           scorenumber++
            ScoreLable.text = "\(scorenumber)"
            CollisionWithPerson(firstBody.node as! SKSpriteNode, Person: secondBody.node as! SKSpriteNode)


        }

        if firstBody.categoryBitMask == physicsCatagory.Score && secondBody.categoryBitMask == physicsCatagory.IceThree ||
            firstBody.categoryBitMask == physicsCatagory.IceThree && secondBody.categoryBitMask == physicsCatagory.Score{

               self.view?.presentScene(EndScene())

        }
    }

    func CollisionWithPerson (Ice: SKSpriteNode, Person: SKSpriteNode){

      Person.removeFromParent()

    }



    func spawnThirdIce(){

        var Ice = SKSpriteNode(imageNamed: "Ice")
        Ice.setScale(0.9)
        Ice.physicsBody = SKPhysicsBody(rectangleOfSize: Ice.size)
        Ice.physicsBody?.categoryBitMask = physicsCatagory.IceThree
        Ice.physicsBody?.contactTestBitMask = physicsCatagory.person | physicsCatagory.Score
        Ice.physicsBody?.affectedByGravity = false
        Ice.physicsBody?.dynamic = true
        let MinValue = self.size.width / 8
        let MaxValue = self.size.width - 20
        let SpawnPoint =  UInt32(MaxValue - MinValue)
        Ice.position = CGPoint(x: CGFloat(arc4random_uniform(SpawnPoint)), y: self.size.height)
        self.addChild(Ice)

        let action = SKAction.moveToY(-85, duration: 2.5)
        let actionDone = SKAction.removeFromParent()
        Ice.runAction(SKAction.sequence([action,actionDone]))


    }



    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {


        for touch in touches {
            let location = touch.locationInNode(self)

         person.position.x = location.x



                   }
    }
    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {

        for touch in touches {
            let location = touch.locationInNode(self)

            person.position.x = location.x



        }
    }




    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}

0 个答案:

没有答案