障碍随机差距不起作用[SpriteKit] [Swift]

时间:2015-07-29 19:05:00

标签: swift sprite-kit

我的代码中存在问题。当我运行游戏时,我有两个障碍(一个在左边,一个在右边)。我在每个障碍物之间编码了一个间隙,它一直在工作。我有一个问题,那里的差距有时会从玩家无法到达的屏幕上消失。我该如何解决这个问题?

这是我的代码:

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)

1 个答案:

答案 0 :(得分:0)

您需要确保随机位置的值始终显示在屏幕上。你可以使用类似的代码来做到这一点:

var height = UInt32(self.frame.size.height)
var randomYPos = CGFloat(arc4random_uniform(UInt32(height)))

您可以对随机x值执行相同操作,只需使用屏幕宽度即可。您只需要对障碍物1执行此操作,然后设置障碍物2相对于障碍物1的位置。