我怎样才能让玩家无法通过某些边界? (屏幕外)

How can I make the player not able to go through certain boundaries? (off-screen)

嘿,我正在看 Ray Wenderlich 关于如何制作像 Mega Jump 这样的游戏的教程!并尝试自己创建一个类似的项目。因此,在本教程中,您将播放器设置为在您倾斜设备时能够离开屏幕。

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;
}

这是我的代码,可以让玩家离开屏幕。如果玩家无法离开屏幕,我该怎么做?例如,如果您将设备一直向右倾斜,则让播放器保持在右侧,直到您将其移动到另一侧!先感谢您。

目前你检查玩家是否在屏幕外(超过 20px),然后将他的位置设置到另一边,在屏幕外 20px。

但是您想在 0 像素和您的屏幕宽度处停止播放器。你可以这样做:

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,如果他向左移动,或者你的屏幕宽度,如果他向右移动。

当前代码 "loops around" 所以一直向左移动意味着你最终在右边。

只需更改 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。右边缘类似的东西。

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