登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

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

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

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)
关闭

每日头条

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

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

返回顶部