我有一个用 SKPhysicsBody(edgeLoopFrom:...)
创建的大矩形 SKPhysicsBody
。在那个物理体内是一堆弹跳的球。出现通知时,我会在屏幕底部显示一个 View 。我想调整 SKPhysicsBody
的大小,以便球在屏幕上弹开此通知 View 。
我现在做的是
func updateWalls() {
let wallInsets = UIEdgeInsetsMake(bottomWallInset, 0, 0, 0)
scene.physicsBody = SKPhysicsBody(edgeLoopFrom:UIEdgeInsetsInsetRect(bounds, wallInsets))
}
换句话说,我只是将旧物理体替换为具有新维度的新物理体。这是有效的,除了如果任何球在旧尺寸和新尺寸之间的区域它们会被困住并从墙外弹回并掉出世界。
是否有一种优雅的方式来为新旧墙边界之间的过渡设置动画,以便位于底部的任何球都被“扫过”到新的维度中,并保证留在墙内? You can't scale an SKPhysicsBody
directly .
最佳答案
在这种情况下,创建一个节点来表示通知可能更容易,而不是调整物理体的大小。也就是说,制作一个不渲染任何东西的 SKNode,将物理体附加到它上,大小与通知 View 相同,然后将节点与通知 View 一起移动。您可以以与 View 动画相同的速度为节点移动创建动画。这应该可以提供您需要的效果,同时减少混淆物理模拟的可能性。
关于ios - 调整 SKPhysicsBody 边缘的大小并让 children 在里面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239104/