Swift 雪碧不断地离开屏幕

Swift 雪碧不断地离开屏幕,swift,sprite-kit,Swift,Sprite Kit,当用户倾斜设备时,我正在使用SpriteKit进行简单的玩家移动练习。然而,我希望玩家不能离开屏幕,但当我尝试将y位置更改为帧时,MaxY(或minY)会继续运行。下面的代码是我在update函数中调用的代码 if let accelerometerData = motionManager.accelerometerData { player.position.y += CGFloat(accelerometerData.acceleration.x * 50)

当用户倾斜设备时,我正在使用SpriteKit进行简单的玩家移动练习。然而,我希望玩家不能离开屏幕,但当我尝试将y位置更改为帧时,MaxY(或minY)会继续运行。下面的代码是我在update函数中调用的代码

 if let accelerometerData = motionManager.accelerometerData {
            player.position.y += CGFloat(accelerometerData.acceleration.x * 50)

            if(player.position.y < frame.minY) {
                player.position.y = frame.minY
            } else if(player.position.y > frame.maxY) {
                player.position.y = frame.maxY
            }
        }
如果让accelerometerData=motionManager.accelerometerData{
player.position.y+=CGFloat(accelerometerData.acceleration.x*50)
if(player.position.yframe.maxY){
player.position.y=frame.maxY
}
}

像这样考虑播放器的大小(伪代码)

如果让accelerometerData=motionManager.accelerometerData{
player.position.y+=CGFloat(accelerometerData.acceleration.x*50)
if(player.position.y
你可能需要考虑玩家自己的大小
player.position.y>frame.maxY-player.size.height
等,这会让它一直出现在屏幕上,但是精灵在击中时会口吃。你在重置位置
player.position.y=frame.maxY+player.size.height时也必须考虑大小。我真的读到了你的第一个评论是错误的,已经有了第二部分。谢谢你,它起作用了。如果你愿意,你可以把它作为一个答案发布,我会接受它。谢谢你,它起作用了!
if let accelerometerData = motionManager.accelerometerData {
            player.position.y += CGFloat(accelerometerData.acceleration.x * 50)

            if (player.position.y < frame.minY) {
                player.position.y = frame.minY    // <- maybe need some adjustment here too
            } else if(player.position.y > frame.maxY - player.size.height) {
                player.position.y = frame.maxY - player.size.height
            }
        }