我的代码中存在问题。当我运行游戏时,我有两个障碍(一个在左边,一个在右边)。我在每个障碍物之间编码了一个间隙,它一直在工作。我有一个问题,那里的差距有时会从玩家无法到达的屏幕上消失。我该如何解决这个问题?
这是我的代码:
let gapWidth = square.size.width * 1.5
var movementAmount = arc4random() % UInt32(self.frame.size.width/2)
var obstacleOffset = CGFloat(movementAmount) - self.frame.size.width / 2
var obstacle1 = SKSpriteNode(imageNamed: "Obstacle")
obstacle1.zPosition = 30
obstacle1.size = CGSize(width: self.frame.size.width, height: 300)
obstacle1.position = CGPoint(x: CGRectGetMidX(self.frame) + obstacle1.size.width / 2 + gapWidth / 2 + obstacleOffset, y: CGRectGetMidY(self.frame))
self.addChild(obstacle1)
var obstacle2 = SKSpriteNode(imageNamed: "Obstacle")
obstacle2.zPosition = 30
obstacle2.size = CGSize(width: self.frame.size.width, height: 300)
obstacle2.position = CGPoint(x: CGRectGetMidX(self.frame) - obstacle2.size.width / 2 - gapWidth / 2 + obstacleOffset, y: CGRectGetMidY(self.frame))
self.addChild(obstacle2)
答案 0 :(得分:0)
您需要确保随机位置的值始终显示在屏幕上。你可以使用类似的代码来做到这一点:
var height = UInt32(self.frame.size.height)
var randomYPos = CGFloat(arc4random_uniform(UInt32(height)))
您可以对随机x值执行相同操作,只需使用屏幕宽度即可。您只需要对障碍物1执行此操作,然后设置障碍物2相对于障碍物1的位置。