Swift 5、保存最高值的函数的idea

Swift 5, Idea for a function that would save the highest value

各位程序员大家好。

我在构建我的 swift 小游戏时偶然发现了一个问题。 我希望我的程序保存我的球获得的最高 Y 坐标值。所以如果一个玩家在 3d space 中上升然后下降,峰值的 Y 值将被保存。 我的问题不是关于实现,而是关于可以解决我的问题的功能的想法。 请记住,坐标每秒更新 60 次,并且它们不会存储在任何数组或任何内容中。

@编辑 并且添加到它,它不像缓存向量的变化那么简单,比如当速度为 0 时因为球沿对角线移动..所以即使它开始下降速度仍然不是 0 它只是减慢了..

let ball = ballNode.presentation
        let ballPosition = ball.position
        
        let targetPosition = SCNVector3(x: ballPosition.x, y: ballPosition.y, z:ballPosition)  //ball spawn point




只需创建一个 maxY 属性 将其初始化为零。

var maxY: CGFloat = .zero

正如 vadian 在评论中所建议的,将上一个值与当前值进行比较。您还可以扩展 Comparable 协议并实现一个变异方法:

extension Comparable {
    mutating func max(_ y: Self) {
        self = Swift.max(self, y)
    }
}

maxY.max(ballPosition.y)