ios - 如何在 Swift 中创建边缘?

标签 ios swift skphysicsbody

我正在尝试创建一个边框覆盖整个框架的单 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/

相关文章:

android - Android的这个post-UrlRequest如何转换成IOS呢?

arrays - 在 Swift 3 中将字符串转换为数组

swift - NSButton RadioGroup(NSMatrix 替代方案)

ios - CGPath 的错误比例 - Swift

ios - 将 UIImage 加载到 WebView Swift 4

ios - (iOS8) 设置状态栏为亮内容

c# - Xamarin 中的 SyndicationFeed 类

swift - SpriteKit中这两个语句有什么区别?

ios - SpriteKit + Swift - 接触时不触发

objective-c - dealloc 方法从 Xcode 4 中的 ViewController 实现文件模板中消失了吗?