- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在开发一款游戏,其中我有一张圆柱形物体的图片,我用以下内容制作了一个 SKPhysicsBody:
self.oval.node.physicsBody = SKPhysicsBody(texture: self.oval.node.texture, size: self.oval.node.size)
此方法在节点周围创建了一个漂亮的形状,但是,重心偏离了......它在椭圆的尖端保持平衡。无论如何要改变它以平衡理论上最重的部分应该在哪里?谢谢!
最佳答案
质心不能偏离太远,它是准确的。问题是您希望您的物理体具有不均匀的密度。刚性物理体的密度始终是均匀的。除了修改物理体本身(即更改物理体的大小/形状)之外,我没有看到这样做的方法。
即使您尝试使用 SKPhysicsBody(bodies: [body1,body2])
从多个物理体的联合创建一个物理体,密度仍然是均匀的,因为 Sprite Kit 仍然会模拟它只有一个 body 。
我能想到的唯一解决方案是使用关节将 2 个 bodes 融合在一起,如下所示。
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))
}
}
然而,这并不能解决圆完美居中的特殊情况。你看我一时冲动暂时解决了上面代码中的问题。更好的解决方案是在更新方法中检查这种特殊情况。
关于ios - SKPhysicsBody 质量变化中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664505/
前言 一年一度的虐狗节终于过去了,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的。程序员在晒什么,程序员在加班。但是礼物还是少不了的,送什么好?作为程序员,我准备了一份特别的礼物,用以往发的微博数据
默认情况下,我有一个 V3 map 加载并以特定的经度/纬度为中心。加载后,用户可以输入他们的地址以获取前往该地点的路线。发生这种情况时, map 会调整大小以适应其左侧的方向框。因此,路线在 map
我是一名优秀的程序员,十分优秀!