SpirteKit深度復制SKSpriteNode節(jié)點及convert轉換其它Scene上的節(jié)點到當前場景坐標

Playground輸出的代碼 ,注意右側打印出的SpriteNode輸出值,HAPPY_NODE的輸出信息一致.

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

那么我們?yōu)楹我M行節(jié)點的復制呢巍耗?WHY? WHY? WHY?


WHY?

因為我們須用節(jié)點spritenode.copy()把其它Scene(CircleScene.sks)里的節(jié)點拷貝一份叽粹,并把拷貝的這一份節(jié)點加到當前的scene(GameScene.sks)里纵苛,還有一個重要的注意點玄坦,就是如果要在GameScene.sks取得 Overlay內的紅色節(jié)點的準確坐標,須用convert把copy到fgNode的節(jié)點上的紅色節(jié)點坐標轉為GameScene的坐標(<code>let pos = fgNode.convert(sprite.position, from: sprite.parent!)</code>),好像有點兒深奧外恕,其實不復雜的赖草,具體查看以下代碼学少;

節(jié)點copy及坐標轉換
//取得CircelScene.sks上的Overlay節(jié)點
var circleAcross: SKSpriteNode!
let overlayScene = SKScene(fileNamed: "CircelScene.sks")!
let overlayNode = overlayScene.childNode(withName: "Overlay")
circleAcross = overlayNode
//復制一份節(jié)點的拷貝,并加在fgNode節(jié)點上
let initialPlatform = circleAcross.copy() as! SKSpriteNode
fgNode.addChild(initialPlatform)
//取得CircelScene.sks上內的Overlay節(jié)點的子節(jié)點名稱為 "red"的所有節(jié)點

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))
      }
    })
  }
//節(jié)點發(fā)生碰撞時 didBegin(:)添加節(jié)點的特效,須用convert把子節(jié)點坐標coordinate轉到fgNode的坐標上

func emitParticles(name: String, sprite: SKSpriteNode) {
   // name 發(fā)生碰撞的特效名稱;
   // sprite 發(fā)生碰撞的的節(jié)點 ,如"red"圓形節(jié)點;
   // 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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末秧骑,一起剝皮案震驚了整個濱河市版确,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乎折,老刑警劉巖绒疗,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骂澄,居然都是意外死亡吓蘑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門坟冲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磨镶,“玉大人,你說我怎么就攤上這事健提×彰ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵私痹,是天一觀的道長脐嫂。 經常有香客問我,道長紊遵,這世上最難降的妖魔是什么雹锣? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮癞蚕,結果婚禮上蕊爵,老公的妹妹穿的比我還像新娘。我一直安慰自己桦山,他們只是感情好攒射,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恒水,像睡著了一般会放。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钉凌,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天咧最,我揣著相機與錄音,去河邊找鬼。 笑死矢沿,一個胖子當著我的面吹牛滥搭,可吹牛的內容都是我干的。 我是一名探鬼主播捣鲸,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼瑟匆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了栽惶?” 一聲冷哼從身側響起愁溜,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎外厂,沒想到半個月后冕象,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡汁蝶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年交惯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穿仪。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡席爽,死狀恐怖,靈堂內的尸體忽然破棺而出啊片,到底是詐尸還是另有隱情只锻,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布紫谷,位于F島的核電站齐饮,受9級特大地震影響,放射性物質發(fā)生泄漏笤昨。R本人自食惡果不足惜祖驱,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞒窒。 院中可真熱鬧捺僻,春花似錦、人聲如沸崇裁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拔稳。三九已至葛峻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巴比,已是汗流浹背术奖。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工礁遵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人采记。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓佣耐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挺庞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容