我的屏幕上有一个球和边界。我现在正在测试物理,我希望球在屏幕上不停地反弹而不会减速。
let b = self.ball?.copy() as! SKShapeNode?
if b != nil {
ball!.position = CGPoint(x: CGFloat.random(min: -(self.frame.size.width/2), max: self.frame.size.width/2), y: CGFloat.random(min: -(self.frame.size.height/2), max: (self.frame.size.height/2)))
b?.physicsBody?.linearDamping = 0
b?.physicsBody?.restitution = 1
b?.physicsBody?.angularDamping = 0
b?.physicsBody?.friction = 0
self.addChild(b!)
b?.physicsBody?.applyImpulse(CGVector(dx: 1000, dy: 50))
}
边界功能正常,但是球会在屏幕上弹跳很短的时间,然后会撞到边缘并失去其动量,只能来回移动x方向。
我尝试将最后一行更改为
b?.physicsBody?.velocity = CGVector(dx: 1000, dy: 50)
但它做同样的事情。在边界上恢复原状也设为1。
答案 0 :(得分:0)
将墙的摩擦力设为0
wall.physicsBody?.friction = 0
还将重力设置为零
self.physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)
答案 1 :(得分:0)
问题是你正在施加冲动。你注意到了它,但没有写
b?.physicsBody?.velocity = CGVector(dx: 1000, dy: 50)
您需要应用矢量以便
b?.physicsBody?.applyForce(CGVector(dx: 1000, dy: 50))