弹性碰撞的速度阈值

时间:2015-01-21 05:53:25

标签: ios objective-c sprite-kit

当我搞乱spritekit时,我注意到即使恢复原状设置为1.0(线性阻尼和摩擦均为0),如果节点的速度很小,它也不会反弹。例如。在下面的代码中,我在左边创建了一个边缘,并且有一个球击中了边缘。我注意到在x方向上,每当速度大于150时,球就会反弹;否则它只会贴在墙上并停止移动。 所以我想知道,有没有办法改变这个门槛,这样即使低速球也会弹跳?谢谢!

self.physicsWorld.gravity = CGVectorMake(0, 0);
SKNode *leftEdge = [[SKNode alloc] init];
leftEdge.physicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:CGPointZero toPoint:CGPointMake(0.0, self.size.height)];
leftEdge.position = CGPointZero;
[self addChild:leftEdge];

SKShapeNode *ball = [SKShapeNode shapeNodeWithCircleOfRadius:30];
ball.position = CGPointMake(self.size.width * 0.3, self.size.height * 0.5);
ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:30];
ball.physicsBody.velocity = CGVectorMake(-150, 0.0);//not bounce
ball.physicsBody.restitution = 1.0;
ball.physicsBody.friction = 0.0;
ball.physicsBody.linearDamping = 0.0;
[self addChild:ball];

1 个答案:

答案 0 :(得分:0)

当两个物体碰撞时,它们的恢复和摩擦(以及许多其他)属性都会被考虑在内。因此,为了弹性碰撞,给墙壁恢复1,摩擦力为0。