Spritekit中如何判断触摸点击的精灵

来源:互联网 发布:淘宝加入购物车怎么买 编辑:程序博客网 时间:2024/05/18 03:26

在Spritekit这个2d游戏框架中,基本常用到的很多元素都是精灵,游戏人物,背景都是精灵,那我们触摸点击了屏幕上的多个精灵中的一个,在程序中如何分辨点击的是哪个精灵?这就需要用到SKSpriteNode实例的name属性

首先我们第一步给游戏添加一个精灵,用一张图片显示游戏人物,然后设置它的name属性为child

   override func didMoveToView(view: SKView) {         let player = SKSpriteNode(imageNamed: "player")     player.name = "child"     player.position = CGPoint(x: size.width/2, y: size.height/2)     addChild(player)               }


这样,我们在游戏中就有一个name = “child”的精灵

然后我们在触摸监控方法中判断当前触摸的精灵的name

     override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {        /* Called when a touch begins */                for touch in (touches ) {            let location = touch.locationInNode(self)            if let sp = nodeAtPoint(location) as? SKSpriteNode{                if sp.name == "child" {                                     print("触摸到了这个名字叫child的精灵")                }                        }                                           }    }
只需通过if来判断当前触摸精灵的name就可以了,当然,最好每个精灵name都不同,如果你要处理一类精灵,例如飞机发射的子弹,那产生的所有精灵的name属性都可以设置为bullet,这样可以管理一类相同作用的精灵。当然,也可以用switch case来判断name,swift中的switch case还是很强大的。

0 0
原创粉丝点击