【问题标题】:Sprite keeps moving off screen雪碧一直在屏幕外移动
【发布时间】:2021-03-05 19:16:06
【问题描述】:

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

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

【问题讨论】:

  • 你可能需要考虑玩家自己的大小player.position.y &gt; frame.maxY - player.size.height
  • 它保持在屏幕上,但是当它命中时精灵会结结巴巴
  • 重置仓位时也要考虑大小player.position.y = frame.maxY + player.size.height
  • 太棒了!我实际上读错了你的第一条评论,并且已经有了第二部分。谢谢你成功了。如果您愿意,可以将其发布为答案,我会接受。

标签: swift sprite-kit


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多