如何让玩家无法通过某些界限? (离屏)

时间:2015-03-23 22:30:24

标签: swift sprite-kit

嘿所以我正在观看Ray Wenderlich关于如何让游戏像大型跳跃的教程!并试图自己创建一个类似的项目。因此,在本教程中,您可以将播放器设置为在您倾斜设备时离开屏幕。

override func didSimulatePhysics() {

    player.physicsBody?.velocity = CGVector(dx: xAcceleration * 400.0, dy: player.physicsBody!.velocity.dy)


    if player.position.x < -20.0 {
        player.position = CGPoint(x: self.size.width + 20.0, y: player.position.y)
    } else if (player.position.x > self.size.width + 20.0) {
        player.position = CGPoint(x: -20.0, y: player.position.y)
    }

    return;
}

这是我让玩家离开屏幕的代码。我怎么能这样做,但玩家不能离开屏幕?例如,如果您将设备一直向右倾斜,则让播放器保持在右侧,直到您以相反的方式移动它!先感谢您。

2 个答案:

答案 0 :(得分:1)

目前您检查播放器是否在屏幕外(超过20像素),然后将其位置设置为另一侧,距离屏幕20px。

但是你想要将播放器停在0px和你的屏幕宽度。你可以这样做:

if player.position.x <= 0.0 {
    player.position = CGPoint(x: 0.0, y: player.position.y)
} else if (player.position.x >= self.size.width) {
    player.position = CGPoint(x: self.size.width, y: player.position.y)
}

如果他向左移动,或者你的屏幕宽度,如果他向右移动,这就设置了玩家的位置为0.0。

答案 1 :(得分:0)

当前代码&#34;循环播放&#34;因此,一直向左移动意味着你最终会在右边。

只需更改if块中的坐标即可固定到边缘。像这样:

if player.position.x < -20.0 {
  player.position = CGPoint(x: -20.0, y: player.position.y)
} else if (player.position.x > self.size.width + 20.0) {
  player.position = CGPoint(x: self.size.width + 20.0, y: player.position.y)
}

请注意,如果玩家超出左边缘(x <-20),那么您只需将x位置保持在-20。类似的东西在右边缘。

你必须尝试这一点,看看它如何与物理和加速一起工作,但这应该是一般的想法。