我使用以下功能来创建路径:
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。一个从中间开始并进入Startpoint(使用新的Controllpoint)。另一个从中间开始并进入端点(使用新的Controllpoint)。这里没问题。
但是我怎么能根据进度添加新的开始/结束点 - 例如,如果游戏中的进度是50%我的开始和端点距离中间还不远 - 我需要新的开始和终点为曲线。这是我的问题。
我怎样才能获得曲线的新起点/终点?
谢谢!
答案 0 :(得分: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)