skullball/rust/src/arrow.rs
2026-08-03 17:13:45 +03:00

29 lines
690 B
Rust

use godot::prelude::*;
#[derive(GodotClass)]
#[class(base=Node3D, init, tool)]
pub struct Arrow {
#[export]
mesh: Option<Gd<Node3D>>,
elapsed: f64,
base: Base<Node3D>,
}
#[godot_api]
impl INode3D for Arrow {
fn process(&mut self, delta: f64) {
self.elapsed += delta;
let global_pos = self.base().get_global_position();
if let Some(mesh) = &mut self.mesh {
mesh.set_global_position(
global_pos
+ Vector3::UP * 2.
+ Vector3::UP * (self.elapsed * 2.).sin() as f32 / 10.,
);
mesh.set_global_rotation(Vector3::UP * self.elapsed as f32);
}
}
}