PaintCode – 在路径上移动对象

我想绘制一条曲线并将一个物体附加到它上面。 是否可以创建分数(从0.0到1.0),这使得我的对象在路径上移动? 当分数为0时,对象在开头,当0.5在中途时,最后当在1.0上时,它在最后。 当然我想要一个弯曲的路径,而不是一条直线:)是否可以在PaintCode中进行?

如果只需要它作为进度条 ,可以在PaintCode中使用它。 诀窍是使用具有非常大的Gap的虚线笔划然后只需更改Dash

例

然后只需附加一个变量就可以了。


编辑:关于原始post下的讨论,该解决方案使用作为单位,因此无论贝塞尔曲线多么弯曲,它都将沿曲线均匀分布。

基于你要使用线性距离沿着曲线行走的事实,贝塞尔曲线很糟糕,你需要自己构建线性映射。 这很简单:

绘制曲线时,还要构建一个查找表,对曲线进行一次采样,例如100个点(t = 0,t = 0.01,t = 0.02等)。 在伪代码中:

lut = []; lut[0] = 0; tlen = curve.length(); for(v=0; v<=100; v++) { t = v/100; clen = curve.split(0,t).length(); percent = 100*clen/tlen; lut[percent] = t; } 

这可能会在您的LUT中留下空白 - 您可以将其作为辅助步骤进行修复,或者将它们留在并对arrays执行二进制扫描以找到最接近的“确实有值”百分比。

然后,当你需要将你的进度显示为一个百分比值时,你只需要查找相应的t值:说你需要显示83%,你查找lut[83]并以给你的值绘制你的对象。