我有一个带有物理身体的弹跳球精灵。
ball.physicsBody = SKPhysicsBody(circleOfRadius: Constants.ballRadius)
ball.physicsBody!.dynamic = true
ball.physicsBody!.allowsRotation = false
ball.physicsBody!.affectedByGravity = true
ball.physicsBody!.restitution = 0.95
ball.physicsBody!.mass = 1.0
问题在于,即使restitution
为0.95
,球也会停止弹跳太快。看起来突然之间"坚持"到边境。
根据Apple的Documentation关于restitution
此属性用于确定物理体的能量 当它从另一个物体反弹时失去。该物业必须是一个价值 介于0.0和1.0之间。默认值为0.2。
因此,每次反弹,我的球都会失去0.05
的能量。所以我认为,问题在于,在某个时刻,它的能量变得太小而SpriteKit
决定将其四舍五入为0
。但那个时刻来得太快,看起来不切实际。
我该怎么做才能解决它?
UPD:
这是我的边境物理机构:
border.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(screenWidth, 10))
border.physicsBody!.dynamic = false
border.physicsBody!.restitution = 1.0