我正在尝试创建一个边框覆盖整个框架的单 View 游戏。我的节点必须留在屏幕上,并在到达任何边界后反弹。我已经使用了几个实例,但我认为问题一定是来自 iOS 模拟器设置。但我不知道它是什么。
到目前为止我尝试过的代码是:
self.physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame)
一旦我的节点到达屏幕底部或顶部,它就会阻止我的节点离开屏幕。然而,一旦到达左侧或右侧墙壁,它仍然会逃脱。我能够解决这个问题的唯一方法是为 Est Wall 创建单独的不可见矩形,例如:
estWall.position = CGPointMake(725, CGRectGetMidY(self.frame))
estWall.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(1, CGRectGetMaxY(self.frame)))
estWall.physicsBody?.dynamic = false
self.addChild(estWall)
我的节点响应了,但是一旦我将设备更改为不同的屏幕尺寸 iPhone,显然矩形会这样移动。我需要做什么来解决这个问题?我不想使用 725 作为 estWall.position 的 x 值,因为它在不同设备上会有所不同。
最佳答案
我不确定整个屏幕的物理主体有什么问题,但在将矩形放置在每个设备的边缘的情况下非常简单。使用这个:
estWall.position = CGPointMake(self.size.width + estWall.size.width/2, CGRectGetMidY(self.frame))
这会将其放在边缘之外。对于另一个,只需对 x 位置执行 0-estWall.size.width/2
即可。希望这会有所帮助。
关于ios - 如何在 Swift 中创建边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727547/