相关疑难解决方法(0)

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

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

我在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设置,但不能让事情停止坚持.

谢谢!

xcode ios sprite-kit

17
推荐指数
1
解决办法
3264
查看次数

Swift + Physics:碰撞时的角度计算错误

我有一个简单的SpriteKit应用程序,墙壁和球.两者都设置为SKPhysicsBody.

当我向一个方向施加力时,我希望球在碰撞时以相同的角度在墙壁上反射,但方向相反.

但有时我看到角度很奇怪.我玩了很多physicsBody属性,但无法解决它.有时第一次反射看起来很好,但是第三次​​或第六次反射,有时第一次反射是错误的角度.

我从不同的帖子中读到,人们有点自我计算的"正确方向".但我无法想象SpriteKits物理引擎无法做到这一点.

检查我的附图,了解我的意思.有人可以帮忙吗?我不想开始使用Box2d for Swift,因为看起来我很难融入Swift.

SpriteKit被驱逐出去,实际发生了什么

这是physicsWorld我的GameScene.swift文件中的init,其中所有元素都添加到:

self.physicsWorld.gravity = CGVectorMake(0, 0)
Run Code Online (Sandbox Code Playgroud)

添加我的所有代码太多了,所以我添加了重要的部分.希望它足以分析.像皮球所有元素,墙壁是SKSpriteNode

这是physicsBody球的代码:

self.physicsBody = SKPhysicsBody(circleOfRadius: Constants.Config.playersize+self.node.lineWidth)
self.physicsBody?.restitution = 1
self.physicsBody?.friction = 0
self.physicsBody?.linearDamping = 1
self.physicsBody?.allowsRotation = false
self.physicsBody?.categoryBitMask = Constants.Config.PhysicsCategory.Player
self.physicsBody?.collisionBitMask = Constants.Config.PhysicsCategory.Wall | Constants.Config.PhysicsCategory.Enemy
self.physicsBody?.contactTestBitMask = Constants.Config.PhysicsCategory.Wall | Constants.Config.PhysicsCategory.Enemy
Run Code Online (Sandbox Code Playgroud)

这是墙的物理体:

el = SKSpriteNode(color: UIColor.blueColor(), size: CGSize(width: Constants.Config.wallsize, height: Constants.Config.wallsize))
el.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: Constants.Config.wallsize, height: Constants.Config.wallsize))
el.physicsBody?.dynamic = false
el.physicsBody?.categoryBitMask = Constants.Config.PhysicsCategory.Wall …
Run Code Online (Sandbox Code Playgroud)

physics ios sprite-kit swift

6
推荐指数
2
解决办法
586
查看次数

球用新的Sprite套件

我想在ios 7上使用新的sprite kit制作一个简单的永远弹跳球.我设置了引力:

 scene.physicsWorld.gravity=CGVectorMake(0, -9);
Run Code Online (Sandbox Code Playgroud)

对于我设置的球体:

ball.physicsBody=[SKPhysicsBody bodyWithCircleOfRadius:17];
ball.physicsBody.mass=1;
ball.physicsBody.restitution=1;
ball.physicsBody.linearDamping=0;
ball.physicsBody.angularDamping=0;
Run Code Online (Sandbox Code Playgroud)

这里的球只是SKSpriteNode.但我有一个问题:每次它反弹它的位置会变得有点高一点.几分钟后,球几乎位于屏幕的顶部.谁能帮助解决这个问题.我只想让球每次都弹回到相同的位置(例如屏幕中间).谢谢.

objective-c ios7 sprite-kit

5
推荐指数
1
解决办法
7095
查看次数

标签 统计

sprite-kit ×3

ios ×2

ios7 ×1

objective-c ×1

physics ×1

swift ×1

xcode ×1