我想知道如果我所做的就是父母的物理身体是什么:
let combinedBodies = SKSpriteNode()
addChild(combinedBodies)
//Create its children like this as an example:
let child = SKSpriteNode(color: UIColor.red, size: CGSize(width: 10, height: 20))
child.physicsBody = SKPhysicsBody(rectangleOf: child.size)
child.physicsBody?.categoryBitMask = collisionType.child.rawValue
combinedBodies.addChild(child)
allBodies.append(child.physicsBody?)
组合体的物理体是否是所有子体的物理组合的组合,或者它没有,我将不得不手动添加它?此外,父母的categoryBitMask
会是什么?如果所有的孩子都有这个类别,或者我会手动给它自己的类别吗?
编辑:我用过这个:
collisionType.child.rawValue
我有一个列表,我存储所有孩子的物理实体,然后将该列表放入此命令(当新旧孩子被删除时,我会不断更新combinedBodies.physicsBody = SKPhysicsBody(bodies: )
)。 然而,现在我遇到的问题是,父母的物理实体不是儿童的原始物理实体(他们在屏幕上的不同位置),他们在屏幕的中间。有没有办法来解决这个问题?
我也改变了这个组合体的物理实体:
combinedBodies.physicsBody
请注意,此问题中的所有代码基本上都是我的代码,只是通过具有不同位置,旋转和颜色的迭代创建新子代。
使用示例代码进行编辑:我已经在我在此处添加的测试程序中重新创建了我的问题(combinedBodies.physicsBody = SKPhysicsBody(bodies: allBodies)
combinedBodies.physicsBody?.isDynamic = true
combinedBodies.physicsBody?.categoryBitMask = collisionType.combinedBodies.rawValue
combinedBodies.physicsBody?.collisionBitMask = 0
combinedBodies.physicsBody?.contactTestBitMask = 0
combinedBodies.physicsBody?.affectedByGravity = false
combinedBodies.physicsBody?.friction = 0.0
是allLine
的父级,{ {1}}在此代码中。)
ScreenLine
更新:现在通过将子节点的physicsBody集中到节点所在的位置(不是CGPoint.zero),但是当我将子节点放在屏幕上时,physicsBody位于正确的位置我把它添加到列表中。 我设置了这样的line和screen line physicsBody位置:
line
我目前正在努力解决的问题: 这使得allLine的physicsBodies居中。 然而,它们不会像它们应该的那样旋转。他们不保留他们的轮换。我该如何解决这个问题?
感谢您的回答和帮助:D