我需要一个曲线编辑器来平衡无尽的游戏,然后我尝试使用AnimationCurve。我需要将曲线设置为一定的范围,例如[0;1],如果我想要一个大于1的值,则评估的结果必须外推曲线。我想通过X和Y分别计算Y和X。问题是AnimationCurve只有3个WrapMode (Clamp, PingPong, Loop)。
如何推断动画曲线?有没有更好的工具来制作外推曲线(后曲线和前曲线)?
对于真正的外推,我认为您必须基于bsamizier数学实现您自己的系统。至少我没有意识到统一提供开箱使用。
解决这个问题的方法可能是定义超出0到1范围的值来覆盖范围,动画曲线确实允许这样做,我认为这没有太多问题。
另一个解决方案,仍然保持在0到1的范围内,但达到相同的效果,将建模从0到1的曲线,使它将覆盖该范围内的极值,并将对象给出的曲线评估时间重新映射到0到1的范围。例如:
// define range extents
float rangeMin = -5f, rangeMax = 5f;
var range = 10f;
// range could be calculated at runtime if necessary:
// [to] (higher value) - [from] (lower value) = [range]
// 5f - -5f = 10f
var timeRaw = 0; // variable provided value
var time01 = (timeRaw - rangeMin) / range;
// reult by timeRaw = 0: (0 - -5) / 10 = 0.5
// reult by timeRaw = 5: (5 - -5) / 10 = 1.0
// reult by timeRaw = -5: (-5 - -5) / 10 = 0.0
结合两种解决方案可以覆盖更极端的值。