我目前正在开发一个游戏,其中有一张圆柱形物体的图片,我使用以下代码创建了一个SKPhysicsBody:
self.oval.node.physicsBody = SKPhysicsBody(texture: self.oval.node.texture, size: self.oval.node.size)
这种方法可以在节点周围创建一个漂亮的形状,但是重心很偏离...它平衡在椭圆的顶端。是否有任何方式可以改变它的平衡点,使它在理论上应该最重的部分平衡?谢谢!
我目前正在开发一个游戏,其中有一张圆柱形物体的图片,我使用以下代码创建了一个SKPhysicsBody:
self.oval.node.physicsBody = SKPhysicsBody(texture: self.oval.node.texture, size: self.oval.node.size)
这种方法可以在节点周围创建一个漂亮的形状,但是重心很偏离...它平衡在椭圆的顶端。是否有任何方式可以改变它的平衡点,使它在理论上应该最重的部分平衡?谢谢!
SKPhysicsBody(bodies:[body1,body2])
从多个物理体的并集中创建物理体,密度仍将是均匀的,因为Sprite Kit仍将将其模拟为一个物体。class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let node1 = SKShapeNode(circleOfRadius: 20)
node1.physicsBody = SKPhysicsBody(circleOfRadius: 20)
node1.position = CGPoint(x: self.size.width/2.0, y: self.size.height/2.0)
let node2 = SKShapeNode(circleOfRadius: 2)
node2.physicsBody = SKPhysicsBody(circleOfRadius: 1)
node2.position = CGPoint(x: self.size.width/2.0, y: self.size.height/2.0+19)
node2.physicsBody!.mass = node1.physicsBody!.mass * 0.2 //Set body2 mass as a ratio of body1 mass.
self.addChild(node1)
self.addChild(node2)
let joint = SKPhysicsJointFixed.jointWithBodyA(node1.physicsBody!, bodyB: node2.physicsBody!, anchor: node1.position)
self.physicsWorld.addJoint(joint)
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
node1.physicsBody!.applyImpulse(CGVector(dx: -10, dy: 0))
}
}
skView.showsPhysics = true
,则会在场景中看到物理体的轮廓。这对于调试物理体问题非常有用。另外,您是否更改了精灵的锚点? - 0x141E