【问题标题】:SpriteKit - Progress bar with BezierPathSpriteKit - 带有 BezierPath 的进度条
【发布时间】:2016-07-03 19:26:34
【问题描述】:

我使用以下函数创建路径:

func CreatePath(){
    let startpoint = CGPoint(x: self.frame.size.width / 6.8966, y: self.frame.size.height*0.5)
    let endpoint = CGPoint(x: self.frame.size.width - startpoint.x, y: self.frame.size.height*0.5)
    let controlpoint = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height)
    curve.moveToPoint(startpoint)
    curve.addQuadCurveToPoint(endpoint, controlPoint: controlpoint)
}

看起来有点像这样:

我怎么做一个进度条,从中间到外面沿着这条曲线。

所以如果游戏的进度是 100%,我会再添加 2 个 BezierPaths。一个从中间开始并到达起点(带有新的 Controllpoint)。另一个从中间开始并到达端点(带有新的 Controllpoint)。这里没问题。

但是我如何根据进度添加新的开始/结束点 - 例如,如果游戏中的进度是 50%,我的开始和结束点离中间不远 - 我需要新的开始和结束点曲线。这是我的问题。

如何获得曲线的新起点/终点?

谢谢!

【问题讨论】:

    标签: ios swift path sprite-kit bezier


    【解决方案1】:

    您需要知道特定点的收益来自特定百分比。

    你可以试试这个算法:

    func quadBezierForPercent(t:Float, startPoint:Float, controlPoint:Float, endPoint:Float) ->Float {
        let mutablet = (1.0-t)
        let mutablett = mutablet*2
        let tt = t*2
    
        let start = startPoint * mutablett
        let middle = 2.0 * controlPoint * mutablet * t
        let end = endPoint * tt
    
        return start + middle + end
    }
    

    用法

    let percentage = 25.0
    let xPos = quadBezierForPercent(percentage, startpoint.x,controlPoint.x,endPoint.x)
    let yPos = quadBezierForPercent(percentage, startpoint.y,controlPoint.y,endPoint.y)
    let point = CGPointMake(xPos,yPos)
    

    【讨论】:

    • 谢谢,这就是我要找的。 :-)
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多