我有一个GameScene.sks,其中我添加了两个SkSpritenodes,它们都称为trampoline。代码给了跳床对象一个物理物体等,但在运行时。只有第一个跳床有身体。
你知道为什么它不能应用于所有同名的节点吗?
//Trampoline
var trampoline: SKSpriteNode?
override func didMove(to view: SKView) {
trampoline = childNode(withName: "trampoline") as? SKSpriteNode
trampoline?.physicsBody = SKPhysicsBody.init(rectangleOf: (trampoline?.size)!)
trampoline?.physicsBody?.affectedByGravity = false
trampoline?.physicsBody?.isDynamic = false
trampoline?.physicsBody?.usesPreciseCollisionDetection = true
trampoline?.physicsBody?.restitution = 1
}发布于 2016-09-23 15:32:45
childNode(withName: "trampoline") as? SKSpriteNode 将只返回一个名为trampoline的节点,然后将其赋给您的trampoline变量;您需要枚举所有名为trampoline的节点并设置它们的物理主体。例如。
enumerateChildNodesWithName("trampoline") { trampolineNode, _ in
trampolineNode?.physicsBody = SKPhysicsBody.init(rectangleOf: (trampolineNode?.size)!)
trampolineNode?.physicsBody?.affectedByGravity = false
trampolineNode?.physicsBody?.isDynamic = false
trampolineNode?.physicsBody?.usesPreciseCollisionDetection = true
trampolineNode?.physicsBody?.restitution = 1
}注意.isDynamic属性;如果为'false',则主体不会涉及冲突或接触。
https://stackoverflow.com/questions/39650559
复制相似问题