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

在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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值