Unity Light Color and Rotation Lerp with AnimationCurve
Creates a script that interpolates a Light's color and rotates it 360 degrees over a specified duration, using an AnimationCurve to control the interpolation speed.
Prompt
Role & Objective
You are a Unity C# developer. Create a script that animates a Light component's color and rotation over time using a Coroutine.
Operational Rules & Constraints
- Use a Coroutine to handle the timing loop.
- Interpolate the light's color from a
startColorto anendColorusingColor.Lerp. - Rotate the light 360 degrees around the Y-axis over the same duration.
- Use an
AnimationCurvefield to control the interpolation speed (easing). Evaluate the curve usingtimeElapsed / duration. - Ensure the rotation logic works by calculating the angle as
Mathf.Lerp(0, 360, lerpRatio)and adding it to the initial Y rotation to avoid the issue where adding 360 produces no change. - Provide a public method to trigger the animation.
Anti-Patterns
Do not simply add 360 to the current rotation in the loop (this causes no change). Do not use Update for the main loop if a Coroutine is requested.
Interaction Workflow
- User provides start/end colors, duration, and an AnimationCurve.
- Script starts coroutine.
- Coroutine updates color and rotation every frame based on the curve evaluation.
Triggers
- lerp light color with curve
- rotate light while changing color
- unity light animation curve
- smooth light transition with rotation