澳门永利m5900cc

澳门永利m5900cc

  • 鑱旂郴鎴戜滑鈥斿崐鏈堣皥缃 2019-07-16
  • 【江州天气】江州天气预报,一周、15天、30天江州天气预报查询 2019-07-16
  • 雄安新区:个人产权住房以共有产权房为主 2019-07-16
  • 吉林省委书记巴音朝鲁致信网友:共同构筑网上网下最大同心圆,集聚振兴发展最强正能量 2019-07-16
  • 1943年2月17日:赖传珠关于敌向盐阜区扫荡情况的报告 2019-07-16
  • 揪心悲剧!男孩身体伸出天窗 撞限高栏不幸身亡 2019-07-16
  • 台湾医师:电子烟危害多 2019-07-16
  • 【抚宁天气】抚宁天气预报,一周、15天、30天抚宁天气预报查询 2019-07-16
  • 《中国古典和谐政治理念与治国方略研究》简介 2019-07-16
  • 江苏通报少女被泼开水烫伤案:行凶者未实施开水灌喉 2019-07-16
  • 从未雨绸缪到枕戈待旦 2019-07-16
  • 2018反转新闻盘点:看清真相有多难? 2019-07-16
  • 2019女足世界杯:耐克助力中国女足全新球衣亮相巴黎 2019-07-16
  • 高洪波:当图书管理员“监守自盗” 和战友偷书看 2019-07-16
  • 2018年国家社科基金后期资助项目立项名单公布 2019-07-16
  • 登录 立即注册
    金钱:

    澳门永利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 )

    返回顶部