trail gradient

This commit is contained in:
2025-04-29 20:22:50 +02:00
parent 5cc97da98b
commit 4041175337
2 changed files with 20 additions and 6 deletions

View File

@@ -136,7 +136,11 @@ fn on_trigger_missile(
SceneRoot(asset.scenes[0].clone()),
),
(
Trail::new(t.translation, LinearRgba::rgb(0.9, 0.9, 0.)),
Trail::new(
t.translation,
LinearRgba::rgb(1., 0.0, 0.),
LinearRgba::rgb(0.9, 0.9, 0.)
),
Gizmo {
handle: gizmo_assets.add(GizmoAsset::default()),
line_config: GizmoLineConfig {

View File

@@ -5,14 +5,19 @@ use crate::GameState;
#[derive(Component)]
pub struct Trail {
points: Vec<Vec3>,
col: LinearRgba,
col_start: LinearRgba,
col_end: LinearRgba,
}
impl Trail {
pub fn new(pos: Vec3, col: LinearRgba) -> Self {
pub fn new(pos: Vec3, col_start: LinearRgba, col_end: LinearRgba) -> Self {
let mut v = Vec::with_capacity(12);
v.push(pos);
Self { points: v, col }
Self {
points: v,
col_start,
col_end,
}
}
pub fn add(&mut self, pos: Vec3) {
@@ -44,7 +49,8 @@ fn update_trail(
continue;
};
for window in trail.points.windows(2) {
let lerp_denom = trail.points.len() as f32;
for (i, window) in trail.points.windows(2).enumerate() {
let [a, b] = window else {
continue;
};
@@ -55,7 +61,11 @@ fn update_trail(
.reparented_to(parent_transform)
.translation;
gizmo.line(a, b, trail.col);
gizmo.line(
a,
b,
trail.col_start.mix(&trail.col_end, i as f32 / lerp_denom),
);
}
}