我搜索了这个,我认为必须有一些参数来解决这个问题,但我还没有找到它.
我在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设置,但不能让事情停止坚持.
谢谢!
我正试图在我的应用程序中显示一个简单的设置屏幕,我正在使用Autolayout.由于我的应用程序支持横向,并且当手机处于横向状态时设置控件不完全适合垂直,我添加了UIScrollview.
似乎UIScrollview和Autolayout的组合在这里和其他地方是一个常见的问题.我已经阅读了一些关于它的文章,从它可以看出,似乎一个好的方法去做我想要做的是将我的各种控件放在一个视图中,就像一个带有约束的"contentView"在该视图中对齐.然后让contentView成为UIScrollView的唯一子视图.我有contentView的约束绑定到UIScrollView的边缘.
UINavigationView -> UIScrollview -> contentView (UIView) -> Control Subviews
Run Code Online (Sandbox Code Playgroud)

它在纵向工作正常,即使我在contentView中添加需要滚动查看的内容,但是当我去景观时,它不会让我向下滚动得足够远.这就像我旋转时内容大小重置为可见区域(或导航控制器superview的框架)的框架.

我想知道我是否需要检查旋转,然后再次设置内容大小?如果是这样,有没有办法从视图(contentView)动态获取该大小?
谢谢你尽你所能的帮助!吉姆