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