如何缩放SKPhysicsBody?

3

1
我在这里成功地使用SKActions实现了这个:https://dev59.com/VYHba4cB1Zd3GeqPP1Z1#33572073。当然,那只是一个简短的尝试,我没有进行过多的测试。你可以试一试并回来看结果。此外,重新创建物理体是一种方法...如果有很多需要缩放的物体,不知道在这种情况下性能如何。 - Whirlwind
我真的不想改变、重建或创建新的身体,只是要缩放现有的身体。好的,很多身体。 - Confused
3个回答

3
如果你给一个精灵分配了物理体,并且缩放了该精灵,那么物理体也会跟着缩放。

我想要缩放物理体,而不是精灵。 - Confused
你可以尝试在你想要显示的实际节点上添加一个alpha值为0且带有物理体的“虚拟”节点,然后缩放/更改虚拟节点。 - claassenApps
只需使用一个SKNode,不需要alpha。 - Knight0fDragon

1
我认为对于你的问题,答案是坚定的“不”; 至少在我之前看到的任何东西中都没有。
如果您想尝试解决问题:
1. 创建一个比当前更大的新物理体。创建一两个方法来完成此操作。
node.physicsBody = scaledPhysicsBody(bodyToScale: xxxx)
2. 我会只创建一个空的SKNode,并将其作为子节点添加到您希望进行命中检测的对象中。然后删除父级的物理体并仅使用子级的物理体。现在,您可以缩放子节点(因此缩放PB)而不影响主精灵的图形。

1

2023 年更新: 如果你从精灵纹理创建物理体,你可以使用 SKPhysicsBody 的初始化器,像这样使用 texture 和 size 属性:

let scale: CGFloat = 0.9
self.physicsBody = SKPhysicsBody(
     texture: self.texture!,
     size: CGSize(
        width: self.size.width * scale, 
        height:self.size.height * scale
    )
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接