博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpirteKit深度复制SKSpriteNode节点及convert转换其它Scene上的节点到当前场景坐标
阅读量:6457 次
发布时间:2019-06-23

本文共 1774 字,大约阅读时间需要 5 分钟。

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! SKSpriteNodefgNode.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://kvizo.baihongyu.com/

你可能感兴趣的文章
第一篇markdown博文
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
noj 2033 一页书的书 [ dp + 组合数 ]
查看>>
ERDAS软件应用(四)遥感影像数据增强
查看>>
修改OBS为仅直播音频
查看>>
完整版:《开源框架实战宝典电子书V1.0.0》内测版下载地址!
查看>>
OCP读书笔记(14) - 管理数据库性能
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
CKEditor的使用-编辑文本
查看>>
洗礼灵魂,修炼python(40)--面向对象编程(10)—定制魔法方法+time模块
查看>>
HDU------checksum
查看>>
使用树莓派拍摄延时动画,制作GIF图
查看>>
css命名规范
查看>>
js 效果
查看>>
19.Java5同步集合类的应用
查看>>
python 关键字yield解析
查看>>
<c:forEach varStatus="status">中 varStatus的作用
查看>>
Aqua Data Studio 数据库开发工具
查看>>
puppet来管理文件和软件包
查看>>
【转载】基于lucene的搜索方案
查看>>