public virtual void SetLength() { targetLength.SetValue(targetLength.GetValue() + InputManager.ChangeLengthInput * growRate * Time.deltaTime); if (actualLength >= targetLength.GetValue()) { do { Vector2 vertex0 = verticies[0]; Vector2 vertex1 = verticies[1]; float distance = Vector2.Distance(vertex0, vertex1); float extraAmount = actualLength - targetLength.GetValue(); if (distance > 0 && extraAmount < distance && extraAmount > 0) { verticies[0] += (vertex1 - vertex0).normalized * extraAmount; actualLength -= extraAmount; return; } else { verticies.RemoveAt(0); actualLength -= distance; } } while (actualLength >= targetLength.GetValue()); // collider.points = verticies.ToArray(); } }
public virtual float GetValue() { value.SetValue(value.GetValue() + timeSinceLastGetValue * changeAmountMultiplier); if ((value.GetValue() == value.valueRange.max && changeAmountMultiplier > 0) || (value.GetValue() == value.valueRange.min && changeAmountMultiplier < 0)) { if (repeatType == RepeatType.Loop) { JumpToStart(); } else if (repeatType == RepeatType.PingPong) { changeAmountMultiplier *= -1; } } timeSinceLastGetValue = 0; return(value.GetValue()); }