澳门永利m5900cc

澳门永利m5900cc

  • 人民创投总经理赵亚辉:区块链产业要避免四大误区 2019-04-24
  • 非洲一原始部落,男子可以娶5个妻子,女人有个让人受不了的习俗 2019-04-24
  • 调查报告预测下半年泰中经济关系稳中向好 2019-04-24
  • 《新闻1+1》 20160111 携程,假票在手,能说走就走? 2019-04-24
  • 邬贺铨:“新华睿思”彰显新华网“数字中国”主力军雄心 2019-04-23
  • "情系民歌 让爱传递"义卖活动 传递社会正能量 2019-04-23
  • 航拍贵州万峰林“福”字稻田景观 2019-04-23
  • Le calendrier deux sessions de Xi Jinping 2019-04-23
  • 万喆:金砖合作为世界注入更多正能量 2019-04-23
  • 运动汇魔笛决定留在皇马 国安被赞中前场太强 2019-04-23
  • [面对面]胡大一:紧急救治 2019-04-23
  • 周伟当选甘肃省武威市市长(图简历) 2019-04-23
  • 北京箭扣南段长城修缮工程正式开工 2019-04-23
  • 创新要重视“技术预见” 2019-04-22
  • 七旬“少年”爱跑马,他还在美国创造了纪录 2019-04-22
  • 登录 立即注册
    金钱:

    澳门永利m5900cc

    SPIRTEKIT深度复制SKSPRITENODE节点及CONVERT转换其它SCENE上的节点到当前场景坐标 ... [复制链接]

    2018-7-22 16:43
    布袋 阅读:351 评论:0 赞:1

    澳门永利m5900cc www.alfanarrealestate.com Playground输出的代码 ,注意右侧打印出的SpriteNode输出值,HAPPY_NODE的输出信息一致.

    SpriteNode

    //MARK:- 扩展SkSpriteNode属性
    extension SKSpriteNode {
      func copyWithPhysicsBody()->SKSpriteNode{
        let spriteNode = self.copy() as! SKSpriteNode
        spriteNode.physicsBody = self.physicsBody
        return spriteNode
      }
    }

    那么我们为何要进行节点的复制呢?WHY? WHY? WHY?
    WHY?

    因为我们须用节点spritenode.copy()把其它Scene(CircleScene.sks)里的节点拷贝一份,并把拷贝的这一份节点加到当前的scene(GameScene.sks)里,还有一个重要的注意点,就是如果要在GameScene.sks取得 Overlay内的红色节点的准确坐标,须用convert把copy到fgNode的节点上的红色节点坐标转为GameScene的坐标(let pos = fgNode.convert(sprite.position, from: sprite.parent!)),好像有点儿深奥,其实不复杂的,具体查看以下代码;

    节点copy及坐标转换

    //取得CircelScene.sks上的Overlay节点
    var circleAcross: SKSpriteNode!
    let overlayScene = SKScene(fileNamed: "CircelScene.sks")!
    let overlayNode = overlayScene.childNode(withName: "Overlay")
    circleAcross = overlayNode
    //复制一份节点的拷贝,并加在fgNode节点上
    let initialPlatform = circleAcross.copy() as! SKSpriteNode
    fgNode.addChild(initialPlatform)
    //取得CircelScene.sks上内的Overlay节点的子节点名称为 "red"的所有节点
    
    animateCoinsInOverlay(overlayNode)
    
    func animateCoinsInOverlay(_ overlay: SKSpriteNode) {
        overlay.enumerateChildNodes(withName: "*", using: { (node, stop) in
          if node.name == "red" {
            node.run(SKAction.repeatForever(self.coinSpecialAnimation))
          } else {
            node.run(SKAction.repeatForever(self.coinAnimation))
          }
        })
      }
    //节点发生碰撞时 didBegin(:)添加节点的特效,须用convert把子节点坐标coordinate转到fgNode的坐标上
    
    func emitParticles(name: String, sprite: SKSpriteNode) {
       // name 发生碰撞的特效名称;
       // sprite 发生碰撞的的节点 ,如"red"圆形节点;
       // sprite.parent 为overlay
       // fgNode.convert 把coin在cicleScene.sks的坐标转为fgNode上的坐标
    
        let pos = fgNode.convert(sprite.position, from: sprite.parent!)
        let particles = SKEmitterNode(fileNamed: name)!
        particles.position = pos
        particles.zPosition = 3
        fgNode.addChild(particles)
    }

    更多游戏教学:http://www.iFIERO.com

    分享到:
    我来说两句
    facelist
    您需要登录后才可以评论 登录 | 立即注册
    所有评论(0)
    关闭

    每日头条

    通过邮件订阅最新 澳门永利m5900cc 信息
    上一条 /4 下一条
    联系我们
    关闭
    合作电话:
    13802416937
    Email:
    435399051@qq.com
    商务市场合作/投稿
    问题反馈及帮助
    联系我们

    广告投放| Github|申请友链|手机版|澳门永利m5900cc ( 澳门永利m5900cc )

    返回顶部