SpirteKit 깊이 복사 SKSpriteNode 노드 및 convert 다른 Scene의 노드를 현재 장면 좌표로 변환
//MARK:- SkSpriteNode
extension SKSpriteNode {
func copyWithPhysicsBody()->SKSpriteNode{
let spriteNode = self.copy() as! SKSpriteNode
spriteNode.physicsBody = self.physicsBody
return spriteNode
}
}
그렇다면 우리는 왜 노드의 복제를 진행해야 합니까?WHY? WHY? WHY?
왜냐하면 우리는 노드spritenode를 사용해야 하기 때문이다.copy () 는 다른 Scene (Circle Scene.sks) 의 노드를 한 부 복사하고, 복사한 이 노드를 현재 Scene (Game Scene.sks) 에 추가합니다. 중요한 주의점은 Game Scene입니다.sks는 Overlay 내의 빨간색 노드의 정확한 좌표를 얻으려면 convert로 fgNode의 노드에 있는 빨간색 노드 좌표를 게임Scene의 좌표(
let pos = fgNode.convert(sprite.position, from: sprite.parent!)
로 바꾸어야 한다. 약간 심오한 것 같지만 사실은 복잡하지 않다. 구체적으로 아래 코드를 살펴보자.// 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
게임 만들기: Cocos에서 키 입력 및 슬라이더 인터페이스 구현헥스 전략 SLG를 좋아하는 필자가 즐거운 전략 SLG를 직접 만드는 기록입니다. Slider 인터페이스를 구현했습니다 키 입력 인터페이스의 구현을 했다 을 확인할 수 있습니다. 헥스의 터치를 어떻게 검출하고 있는지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.