如何将 SKPhysicsBody(texture: size:) 居中于 SKSpriteNode 锚点以外的点
Posted
技术标签:
【中文标题】如何将 SKPhysicsBody(texture: size:) 居中于 SKSpriteNode 锚点以外的点【英文标题】:How to center a SKPhysicsBody(texture: size:) in a point other than the SKSpriteNode anchor point 【发布时间】:2015-11-03 19:31:44 【问题描述】:SKSpriteNode 锚点设置为 (0.5, 0)。
如何在不更改 (0.5, 0) 锚点的情况下创建一个以 (0.5,0.5) 为中心的 SKPhysicsBody(texture: size:)
物理体。
【问题讨论】:
【参考方案1】:您可以使用+ bodyWithRectangleOfSize:center: 或 + bodyWithCircleOfRadius:center:,像这样:
let sprite = SKSpriteNode(color: SKColor.whiteColor(), size: CGSize(width: 100.0, height: 100.0))
sprite.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
sprite.anchorPoint = CGPoint(x: 0.5, y: 0.0)
sprite.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size, center: CGPoint(x: 0, y: sprite.size.height/2.0))
sprite.physicsBody?.affectedByGravity = false // just added for easier debugging
addChild(sprite)
Center 参数表示正方形/圆在所属节点坐标系中的原点。
【讨论】:
我需要使用 SKPhysicsBody(texture: size:) 来获得具有纹理形状但大小不同的主体。 @crvo84 啊,好吧...那么,更改节点锚点的原因是什么?您不能将其保留为 (0.5,0.5) 并相应地更改节点的位置吗? 一篇关于锚点和物理体的有用帖子。 ***.com/a/22095999/3402095 在场景中,我需要围绕 (0.5, 0) 处的锚点旋转精灵。如果有一种方法可以更改身体中心,那就太好了,这样我就不需要相应地更改我的所有代码。谢谢!以上是关于如何将 SKPhysicsBody(texture: size:) 居中于 SKSpriteNode 锚点以外的点的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SKPhysicsBody 复制 SKSpriteNode?