gpt4 book ai didi

iphone - 对待 SpriteKit Swift 中的每个节点

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:34 24 4
gpt4 key购买 nike

每次我点击屏幕时,我都会创建一个新的圆形 SKShapeNode。

我试图做下一件事:每当新的 SKShapeNode 进入地面(地面 y 是屏幕的一半)时 - 他变成绿色。所以我尝试了这个:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
newestBall = SKShapeNode(circleOfRadius: 10)
newestBall.physicsBody = SKPhysicsBody(circleOfRadius: newestBall.frame.height / 2)
newestBall.position = CGPoint(x: CGRectGetMidX(self.frame) ,y: self.frame.size.height - newBall.frame.height)
newestBall.fillColor = SKColor.blueColor()
newestBall.strokeColor = SKColor.blackColor()
newestBall.glowWidth = 1.0
newestBall.zPosition = 9
newestBall.physicsBody?.dynamic = true
newestBall.physicsBody?.allowsRotation = false
newestBall.physicsBody?.friction = 0
newestBall.physicsBody?.restitution = 1
newestBall.physicsBody?.linearDamping = 0
newestBall.physicsBody?.angularDamping = 0
newestBall.physicsBody?.categoryBitMask = ballsGroup
}
override func update(currentTime: CFTimeInterval) {
if newestBall.position.y < ground.position.y {
newestBall.fillColor = SKColor.greenColor()
}
}

而且有效!但是每当我点击两次并创建 2 个球(第一个球仍然没有进入地下)时,只有最后一个球变成绿色,因为他是 newestBall

如果他进入地下,我想让每个球都变成绿色。

最佳答案

给你的 newestBall 一个名字:

newestBall.name = "Ball"

然后检查名称为“Ball”的所有节点,并在满足要求时更改颜色

self.enumerateChildNodesWithName("Ball", usingBlock: {
(node: SKNode!, stop: UnsafeMutablePointer <ObjCBool>) -> Void in
let shapeNode = node as! SKShapeNode
if shapeNode < self.ground.position.y {

shapeNode = SKColor.greenColor()
}
})

您可以将其添加到 update()selfparentNode 或您最新的 Ball 和地面节点。

关于iphone - 对待 SpriteKit Swift 中的每个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503388/

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