gpt4 book ai didi

swift - 获取子SKSpriteNode位置

转载 作者:行者123 更新时间:2023-11-30 10:14:56 34 4
gpt4 key购买 nike

我目前正在尝试创建一个游戏,当平台离开场景时,该游戏将在场景中自动生成平台。

我创建了 5 个 SKSpriteNode,并将它们作为子节点添加到平台 SKNode。

然后,我使用更新函数中的 platformGroupNode.position.x-- 将它们移动到屏幕上

但是,我想检测其中一个 child 何时离开屏幕,以便我可以生成一个新平台。

我尝试了以下方法,但它似乎只为我提供了该子节点在父节点内的位置

for child in shipGroupNode.children {
println(child.position.x)
}

是否有更好的方法对 Sprite 节点进行分组,以便我查看它们与场景相关的各个属性并控制是否有一个组?

代码------------

mport SpriteKit

// Globals
let platformGroupNode = SKNode()
var platformX:CGFloat = 200

class GameScene: SKScene {
override func didMoveToView(view: SKView) {

platformGroupNode.position = CGPoint(x: 0, y: 0)
addChild(platformGroupNode)

// Add platforms
addPlatform(platformX)

// Add platforms
for i in 1...4 {
addPlatform(platformX)
//println(platformX)
}
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
}

override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
platformGroupNode.position.x--

for child in platformGroupNode.children {
println(child.position.x)
println(convertPointToView(CGPoint(x: child.position.x, y: child.position.y)))
}

}

func addPlatform(platformx:CGFloat) {
let platform = SKSpriteNode(imageNamed:"Spaceship")

platform.xScale = 0.5
platform.yScale = 0.5
platform.position = CGPoint(x: platformx, y: self.size.height/2)

platformX = platformx + 200
platformGroupNode.addChild(platform)
}
}

最佳答案

可以使用SKScene上的intersectsNode方法检查子节点是否可见;当子节点可见时,intersectsNode 将返回 true

for child in platformGroupNode.children {
if let sprite = child as? SKSpriteNode where !intersectsNode(sprite) {
child.removeFromParent()

// Generate new platform...
}
}

删除然后创建新平台的另一种方法是重新定位刚刚移出屏幕的平台,以便它将移回屏幕上。例如:如果从右向左滚动,当平台移出左边缘时,它将重新定位在右侧。这样做的好处是一开始只需要创建几个平台。

<小时/>

要使其正常工作,SKScenesize 必须等于其 SKView 大小。有关这方面的信息,请查看 SpriteKit Coordinates differ between iPad and iPhone

关于swift - 获取子SKSpriteNode位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30699051/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com