wheeeee but also try signal
parent
a2f4fce705
commit
3893702330
|
|
@ -2,27 +2,41 @@ use godot::{prelude::*, classes::{ISprite2D, Sprite2D}};
|
||||||
#[derive(GodotClass)]
|
#[derive(GodotClass)]
|
||||||
#[class(base=Sprite2D)]
|
#[class(base=Sprite2D)]
|
||||||
struct BreeLPlayer {
|
struct BreeLPlayer {
|
||||||
base: Base<Sprite2D>
|
base: Base<Sprite2D>,
|
||||||
|
speed: f64,
|
||||||
|
radians: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[godot_api]
|
#[godot_api]
|
||||||
impl ISprite2D for BreeLPlayer {
|
impl ISprite2D for BreeLPlayer {
|
||||||
fn init(base: Base<Sprite2D>) -> Self {
|
fn init(base: Base<Sprite2D>) -> Self {
|
||||||
BreeLPlayer{base: base}
|
BreeLPlayer{base: base, speed: 200.0, radians: 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn physics_process(&mut self, delta: f64) {
|
fn physics_process(&mut self, delta: f64) {
|
||||||
let radians = (1.0 * delta) as f32;
|
let radians = self.radians * delta as f32;
|
||||||
self.base_mut().rotate(radians);
|
self.base_mut().rotate(radians);
|
||||||
|
|
||||||
let rotation = self.base().get_rotation();
|
let rotation = self.base().get_rotation();
|
||||||
let velocity = Vector2::UP.rotated(rotation) * 200 as f32;
|
let velocity = Vector2::UP.rotated(rotation) * self.speed as f32;
|
||||||
self.base_mut().translate(velocity * delta as f32);
|
self.base_mut().translate(velocity * delta as f32);
|
||||||
|
|
||||||
|
self.increase_speed(100.0 * delta as f64);
|
||||||
|
self.radians *= 1.01 as f32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[godot_api]
|
#[godot_api]
|
||||||
impl BreeLPlayer {
|
impl BreeLPlayer {
|
||||||
|
#[func]
|
||||||
|
fn increase_speed(&mut self, amount: f64) {
|
||||||
|
self.speed += amount;
|
||||||
|
self.base_mut().emit_signal("speed_increased", &[]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[signal]
|
||||||
|
fn speed_increased();
|
||||||
|
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
eprintln!("drop");
|
eprintln!("drop");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue