澳门永利m5900cc

澳门永利m5900cc

  • 专访:小小“包宝宝” 浓浓中国味儿——访皮克斯首位华人女导演石之予 2019-02-23
  • 德国就是个典型的社会主义国家 2019-02-23
  • 植树大神教你如何10秒钟种一棵树 2019-02-23
  • 手机厂商拼抢线下阵地 2019-02-23
  • 新华时评:建设一支生态环境保护铁军 2019-02-23
  • 地级市政府电子服务能力综合指数排行 2019-02-23
  • 美国7月核心通胀率升至近十年来最高水平 2019-02-23
  • 1935年南京政府“以攻为守”的对日战略收获了怎样的成效? 2019-02-23
  • 安置点“黑板报”表谢意 2019-02-23
  • 陆军:实兵实弹对抗演练 提升作战能力 2019-02-23
  • 大鱼漫画:我们能在2022年世界杯见到中国队吗? 2019-02-23
  • 国务院部长、委员会主任、中国人民银行行长、审计长进行宪法宣誓 2019-02-23
  • 想多吃还不发胖?科学家找到防止体重增加的物质 2019-02-23
  • Itrust互联网信用认证 2019-02-23
  • 图解:香港推出“科技人才入境计划” 什么人可以参与? 2019-02-23
  • 登录 立即注册
    金钱:

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

    返回顶部