SpriteKit节点坚持场景/不弹跳的边缘

Jim*_*Jim 17 xcode ios sprite-kit

我搜索了这个,我认为必须有一些参数来解决这个问题,但我还没有找到它.

我在SpriteKit中有一个场景,我希望一些圆/球能够反弹并保持它们无限期的任何速度.它们应该从场景的边缘反弹.

如果它们移动速度足够快,或者以相当尖锐的角度击中,这是有效的,但是如果它们变慢并且接近边缘的平面,它们会继续移动(这很好)但是它们"坚持"到边缘.这种坚持是我不想要的.即使走得很慢,它们也应该反弹.

为了设置边缘,我使用了:

SKPhysicsBody *borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody = borderBody;
self.physicsBody.friction = 0.0;
self.physicsBody.restitution = 1.0;
self.physicsBody.linerDamping = 0.0;
self.physicsBody.angularDamping = 0.0;
self.physicsBody.affectedByGravity = NO;
Run Code Online (Sandbox Code Playgroud)

在圆形节点上,我有类似的设置,如:

ball.usesPresciseCollisionDetection = YES;
ball.dynamic = YES;
ball.restitution = 1.0;
ball.linearDamping = 0.0;
ball.angularDamping = 0.0;
ball.friction = 0.0;
Run Code Online (Sandbox Code Playgroud)

我的场景中的引力为零.我向节点添加了一个冲动,它们开始弹跳 - 看起来非常接近,因为物体反弹,但是如果有任何缓慢移动并以浅角度进入,它们会"拥抱"边缘.我将尝试在下面插图以帮助可视化.

http://i.imgur.com/Rpr7luY.png

我尝试过使用大量的PhysicsBody设置,但不能让事情停止坚持.

谢谢!

Jug*_*ang 0

错误的初始化程序。有两种SKPhysicsBody-基于卷基于边缘。您使用的类型完全错误,它不参与运动。

请查看SKPhysicsBody 文档。

  • 我认为这并没有解决最初的问题。我多次注意到,如果物体的速度太低,它们就不会弹跳。 (2认同)