SpriteKit:SKPhysicsBody 溜走

Posted

技术标签:

【中文标题】SpriteKit:SKPhysicsBody 溜走【英文标题】:SpriteKit: SKPhysicsBody slips away 【发布时间】:2015-06-22 16:58:02 【问题描述】:

我有一个 SKSpriteNode (Bird) 和一个 SKPhysicsBody (Circle)。 小鸟节点受重力影响下落,直到到达 100px 的 y 位置。

override func didSimulatePhysics()    

        if (bird.position.y < 100) 

               bird.position = CGPointMake(bird.position.x, 100)
         

问题是,physicsBody 正在远离节点。 physicsBody 应该以 Bird 为中心。 只要我点击屏幕,小鸟就会有冲动向上移动。 physicsBody 立即就位。

这是physicsBody代码:

bird.physicsBody = SKPhysicsBody(circleOfRadius: bird.frame.width * 0.5)
bird.physicsBody!.contactTestBitMask = PhysicsCategory.LeftBoard | PhysicsCategory.RightBoard |  PhysicsCategory.Border
bird.physicsBody!.categoryBitMask = PhysicsCategory.Bird
bird.physicsBody!.collisionBitMask = PhysicsCategory.None
bird.physicsBody!.mass = 1

bird.physicsBody!.affectedByGravity = false
bird.physicsBody!.allowsRotation = false

【问题讨论】:

【参考方案1】:

您需要停止速度。您正在强制位置,但在每一步之后速度都会继续。

此外,您通常应该在更新方法中模拟物理场之前进行此类更改。

【讨论】:

很好的解决方案,非常简单。有时我觉得自己真的很愚蠢。谢谢 @JonasEster 别担心,我在调试我的游戏时遇到过很多次这个问题:) 现在我将 y 速度设置为 0,将 y 位置设置为 100。否则鸟会慢慢下沉。

以上是关于SpriteKit:SKPhysicsBody 溜走的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 的 SKPhysicsBody 与多边形辅助工具

iOS -- SpriteKit框架之SKPhysicsBody的移动和连接

使用“bodyWithTexture”(SpriteKit)时更改 SKPhysicsBody 的中心点

SpriteKit:SKSpriteNode 包含另一个 SKSpriteNodes 但只有一个 SKPhysicsBody

SpriteKit SKPhysicsBody 破碎碰撞

SpriteKit SKPhysicsBody 像一扇门一样的方向碰撞你只能穿过但不能回来