protected virtual void Update() { if (state == DamperState.Accelerating) { timer += Time.deltaTime; engine.power = accelerationCurve.Evaluate(timer); if (timer >= accelerationCurve[accelerationCurve.length - 1].time) { timer = 0; state = DamperState.Stop; enabled = false; } } else if (state == DamperState.Decelerating) { timer += Time.deltaTime; engine.power = decelerationCurve.Evaluate(timer); if (timer >= decelerationCurve[decelerationCurve.length - 1].time) { engine.enabled = false; engine.power = timer = 0; state = DamperState.Stop; enabled = false; } } }
/// <summary> /// Begin accelerate engine's power. /// </summary> public virtual void BeginAccelerate() { if (engine.power == 0) { state = DamperState.Accelerating; enabled = true; } }
/// <summary> /// Begin decelerate engine's power. /// </summary> public virtual void BeginDecelerate() { if (engine.power != 0 && state == DamperState.Stop) { state = DamperState.Decelerating; enabled = true; } }