skeleton movements improve

This commit is contained in:
artem 2024-01-31 18:37:41 +03:00
parent a29ab4c7f6
commit 9596969d3d
6 changed files with 440 additions and 387 deletions

Binary file not shown.

View File

@ -1593,68 +1593,68 @@ function __wbg_get_imports() {
const ret = wasm.memory;
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11131 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_32);
imports.wbg.__wbindgen_closure_wrapper11137 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11132 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_32);
imports.wbg.__wbindgen_closure_wrapper11138 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11133 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11134 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_39);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11135 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11136 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_44);
imports.wbg.__wbindgen_closure_wrapper11139 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11140 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9430, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_39);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper30789 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 25999, __wbg_adapter_49);
imports.wbg.__wbindgen_closure_wrapper11141 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32207 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper11142 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_44);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32208 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
imports.wbg.__wbindgen_closure_wrapper11146 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9434, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32209 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32210 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32211 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32212 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
imports.wbg.__wbindgen_closure_wrapper30795 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26003, __wbg_adapter_49);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32213 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26718, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper37759 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 30114, __wbg_adapter_68);
imports.wbg.__wbindgen_closure_wrapper32214 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32215 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32216 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32217 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32218 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32219 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26722, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper37765 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 30118, __wbg_adapter_68);
return addHeapObject(ret);
};

View File

@ -1,7 +1,6 @@
use fyrox::{
core::{
algebra::Vector2, impl_component_provider, pool::Handle, reflect::prelude::*,
uuid_provider, visitor::prelude::*,
algebra::{Vector3, Vector2}, impl_component_provider, pool::Handle, reflect::prelude::*, uuid_provider, visitor::prelude::*
},
scene::animation::spritesheet::SpriteSheetAnimation,
scene::dim2::{collider::Collider, rectangle::Rectangle, rigidbody::RigidBody},
@ -12,13 +11,19 @@ use fyrox::{
impl_component_provider!(Enemy,);
uuid_provider!(Enemy = "a5671d19-9f1a-4286-8486-add4ebaadaec");
#[derive(Debug, Clone, Default)]
#[derive(Debug, Clone, Default, Copy)]
enum Animations {
#[default]
Idle = 0,
Run = 1,
Fight = 2,
}
const DISTANCE_TO_FIGHT: f32 = 0.5;
const DISTANCE_TO_VIEW: f32 = 5.0;
const END_MAP_LEFT: f32 = -25.0;
const END_MAP_RIGHT: f32 = 25.0;
#[derive(Visit, Reflect, Debug, Clone, Default)]
pub struct Enemy {
sprite: Handle<Node>,
@ -37,7 +42,7 @@ pub struct Enemy {
player_collider: Handle<Node>,
}
impl Enemy {
pub fn build(&self) {
// pub fn build(&self) {
// let mut material = Material::standard_2d();
// material
// .set_property(
@ -49,58 +54,103 @@ impl Enemy {
// )
// .unwrap();
// material_resource = MaterialResource::new_ok(Default::default(), material);
}
// }
fn get_speed(&self) -> f32 {
return -2.0;
}
fn move_do(&mut self, context: &mut ScriptContext) {
fn distance_to_player(&self, context: &mut ScriptContext) -> f32 {
let mut graph_ctx = context.scene.graph.begin_multi_borrow::<2>();
let enemy_rigid_body = graph_ctx.try_get(context.handle).unwrap().cast_mut::<RigidBody>();
// match rigid_body {
// Some(rigid_data) => {
// let x_speed = self.get_speed();
// rigid_data.set_lin_vel(Vector2::new(x_speed, rigid_data.lin_vel().y));
// }
// None => {}
// }
let enemy_rigid_data = match enemy_rigid_body {
Some(rigid_data) => rigid_data,
None => return,
None => return 0.0,
};
let player_rigid_body = graph_ctx.try_get(self.player_handle).unwrap().cast_mut::<RigidBody>();
let player_rigid_data = match player_rigid_body {
Some(rigid_body) => rigid_body,
None => return,
None => return 0.0,
};
let player_position = player_rigid_data.local_transform().position();
// TODO: if player is places abroad maps - stop activity
if player_position.x <= END_MAP_LEFT || player_position.x >= END_MAP_RIGHT{
return 100.0
}
let enemy_position = enemy_rigid_data.local_transform().position();
return player_position.x - enemy_position.x;
}
// // Calculate the direction vector from *this* node to the player node
// let dir_x = player_position.x - self_position.x;
// let dir_y = player_position.y - self_position.y;
// // Calculate the factor to scale the direction vector by
// // to ensure the enemy moves at the speed we want
// let factor = self.get_speed() / (dir_x.powi(2) + dir_y.powi(2)).sqrt();
// Set the linear velocity of *this* node to the scaled direction vector
// enemy_rigid_data.set_lin_vel(Vector2::new(dir_x * factor, dir_y * factor));
let mut x_speed = self.get_speed();
if player_position.x > enemy_position.x {
x_speed *= -1.0;
fn get_speed(&self, context: &mut ScriptContext) -> f32 {
let distance = self.distance_to_player(context);
if distance > DISTANCE_TO_VIEW {
return 0.0;
}
if distance < DISTANCE_TO_VIEW * -1.0 {
return 0.0;
}
enemy_rigid_data.set_lin_vel(Vector2::new(x_speed, enemy_rigid_data.lin_vel().y));
if distance > DISTANCE_TO_FIGHT{
return 2.0
}
if distance < DISTANCE_TO_FIGHT * -1.0 {
return -2.0
}
return 0.0;
}
fn change_orientation(&self, context: &mut ScriptContext) {
let x_speed = self.get_speed(context);
if x_speed == 0.0 {
return;
}
let sprite = context.scene.graph.try_get_mut(self.sprite);
match sprite {
Some(sprite_data) => {
// It is always a good practice to check whether the handles are valid, at this point we don't know
// for sure what's the value of the `sprite` field. It can be unassigned and the following code won't
// execute. A simple `context.scene.graph[self.sprite]` would just panicked in this case.
let local_transform: &mut fyrox::scene::transform::Transform =
sprite_data.local_transform_mut();
let current_scale = **local_transform.scale();
local_transform.set_scale(Vector3::new(
// Just change X scaling to mirror player's sprite.
current_scale.x.copysign(-x_speed),
current_scale.y,
current_scale.z,
));
}
None => {}
}
}
fn move_do(&mut self, context: &mut ScriptContext) {
let x_speed = self.get_speed(context);
let enemy_rigid_body = context.scene.graph[context.handle].cast_mut::<RigidBody>();
if let Some(enemy_rigid_data) = enemy_rigid_body {
enemy_rigid_data.set_lin_vel(Vector2::new(x_speed, enemy_rigid_data.lin_vel().y));
}
}
fn animate_choose(&mut self, context: &mut ScriptContext) {
self.current_animation = Animations::Idle;
if self.get_speed(context) != 0.0 {
self.current_animation = Animations::Run;
}
if self.fight {
self.current_animation = Animations::Fight;
}
}
fn set_figh(&mut self, context: &mut ScriptContext) {
let distance = self.distance_to_player(context);
self.fight = distance < DISTANCE_TO_FIGHT && distance > -1.0 * DISTANCE_TO_FIGHT
}
pub fn animation_do(&mut self, context: &mut ScriptContext) {
let mut current_animation = Animations::Run;
let current_animation = self.animations.get_mut(current_animation as usize);
self.animate_choose(context);
let cur_anim = self.current_animation as usize;
let current_animation = self.animations.get_mut(cur_anim);
match current_animation {
Some(animation_data) => {
animation_data.update(context.dt);
@ -147,7 +197,9 @@ impl ScriptTrait for Enemy {
}
fn on_update(&mut self, context: &mut ScriptContext) {
self.change_orientation(context);
self.animation_do(context);
self.move_do(context);
self.set_figh(context);
}
}

View File

@ -196,6 +196,7 @@ impl Player {
None => {}
}
}
fn add_animation_to_stack(&mut self, animation: Animations) {
if self.current_animation.len() > 2 {
return;

View File

@ -322,169 +322,31 @@
),
node_infos: {
(
index: 23,
generation: 1,
): (
is_expanded: true,
),
(
index: 39,
index: 8,
generation: 1,
): (
is_expanded: false,
),
(
index: 22,
index: 37,
generation: 1,
): (
is_expanded: false,
),
(
index: 1,
generation: 1,
): (
is_expanded: true,
),
(
index: 24,
index: 90,
generation: 1,
): (
is_expanded: false,
),
(
index: 38,
index: 40,
generation: 1,
): (
is_expanded: true,
),
(
index: 14,
generation: 1,
): (
is_expanded: true,
),
(
index: 4,
generation: 1,
): (
is_expanded: true,
),
(
index: 3,
generation: 1,
): (
is_expanded: true,
),
(
index: 47,
generation: 1,
): (
is_expanded: true,
),
(
index: 77,
generation: 1,
): (
is_expanded: true,
),
(
index: 7,
generation: 1,
): (
is_expanded: true,
),
(
index: 89,
generation: 1,
): (
is_expanded: true,
),
(
index: 2,
generation: 1,
): (
is_expanded: true,
),
(
index: 66,
generation: 1,
): (
is_expanded: false,
),
(
index: 56,
generation: 1,
): (
is_expanded: true,
),
(
index: 26,
generation: 1,
): (
is_expanded: true,
),
(
index: 48,
generation: 1,
): (
is_expanded: true,
),
(
index: 17,
generation: 1,
): (
is_expanded: false,
),
(
index: 72,
generation: 1,
): (
is_expanded: false,
),
(
index: 20,
generation: 1,
): (
is_expanded: true,
),
(
index: 92,
generation: 1,
): (
is_expanded: true,
),
(
index: 29,
generation: 1,
): (
is_expanded: true,
),
(
index: 16,
generation: 1,
): (
is_expanded: true,
),
(
index: 54,
generation: 1,
): (
is_expanded: true,
),
(
index: 42,
generation: 1,
): (
is_expanded: false,
),
(
index: 93,
generation: 1,
): (
is_expanded: false,
),
(
index: 95,
index: 18,
generation: 1,
): (
is_expanded: true,
@ -496,97 +358,19 @@
is_expanded: true,
),
(
index: 50,
generation: 1,
): (
is_expanded: true,
),
(
index: 53,
generation: 1,
): (
is_expanded: true,
),
(
index: 5,
generation: 1,
): (
is_expanded: true,
),
(
index: 78,
index: 17,
generation: 1,
): (
is_expanded: false,
),
(
index: 18,
index: 7,
generation: 1,
): (
is_expanded: true,
),
(
index: 34,
generation: 1,
): (
is_expanded: true,
),
(
index: 40,
generation: 1,
): (
is_expanded: true,
),
(
index: 0,
generation: 1,
): (
is_expanded: true,
),
(
index: 9,
generation: 1,
): (
is_expanded: false,
),
(
index: 11,
generation: 1,
): (
is_expanded: false,
),
(
index: 28,
generation: 1,
): (
is_expanded: false,
),
(
index: 33,
generation: 1,
): (
is_expanded: true,
),
(
index: 51,
generation: 1,
): (
is_expanded: true,
),
(
index: 83,
generation: 1,
): (
is_expanded: true,
),
(
index: 69,
generation: 1,
): (
is_expanded: false,
),
(
index: 82,
index: 23,
generation: 1,
): (
is_expanded: true,
@ -598,55 +382,13 @@
is_expanded: true,
),
(
index: 8,
generation: 1,
): (
is_expanded: false,
),
(
index: 60,
generation: 1,
): (
is_expanded: false,
),
(
index: 75,
generation: 1,
): (
is_expanded: false,
),
(
index: 35,
index: 20,
generation: 1,
): (
is_expanded: true,
),
(
index: 46,
generation: 1,
): (
is_expanded: false,
),
(
index: 63,
generation: 1,
): (
is_expanded: false,
),
(
index: 49,
generation: 1,
): (
is_expanded: false,
),
(
index: 62,
generation: 1,
): (
is_expanded: true,
),
(
index: 81,
index: 87,
generation: 1,
): (
is_expanded: false,
@ -664,19 +406,25 @@
is_expanded: true,
),
(
index: 80,
index: 6,
generation: 1,
): (
is_expanded: true,
),
(
index: 21,
index: 62,
generation: 1,
): (
is_expanded: false,
is_expanded: true,
),
(
index: 44,
index: 53,
generation: 1,
): (
is_expanded: true,
),
(
index: 4,
generation: 1,
): (
is_expanded: true,
@ -688,73 +436,55 @@
is_expanded: true,
),
(
index: 94,
index: 58,
generation: 1,
): (
is_expanded: true,
),
(
index: 6,
generation: 1,
): (
is_expanded: true,
),
(
index: 55,
generation: 1,
): (
is_expanded: true,
),
(
index: 43,
index: 60,
generation: 1,
): (
is_expanded: false,
),
(
index: 57,
index: 93,
generation: 1,
): (
is_expanded: false,
),
(
index: 71,
index: 38,
generation: 1,
): (
is_expanded: true,
),
(
index: 31,
index: 16,
generation: 1,
): (
is_expanded: true,
),
(
index: 10,
index: 13,
generation: 1,
): (
is_expanded: true,
),
(
index: 27,
index: 33,
generation: 1,
): (
is_expanded: false,
is_expanded: true,
),
(
index: 90,
index: 92,
generation: 1,
): (
is_expanded: false,
is_expanded: true,
),
(
index: 87,
generation: 1,
): (
is_expanded: false,
),
(
index: 91,
index: 47,
generation: 1,
): (
is_expanded: true,
@ -766,7 +496,31 @@
is_expanded: false,
),
(
index: 74,
index: 71,
generation: 1,
): (
is_expanded: true,
),
(
index: 78,
generation: 1,
): (
is_expanded: false,
),
(
index: 35,
generation: 1,
): (
is_expanded: true,
),
(
index: 50,
generation: 1,
): (
is_expanded: true,
),
(
index: 86,
generation: 1,
): (
is_expanded: true,
@ -778,19 +532,73 @@
is_expanded: true,
),
(
index: 19,
index: 75,
generation: 1,
): (
is_expanded: false,
),
(
index: 86,
index: 66,
generation: 1,
): (
is_expanded: false,
),
(
index: 46,
generation: 1,
): (
is_expanded: false,
),
(
index: 48,
generation: 1,
): (
is_expanded: true,
),
(
index: 15,
index: 31,
generation: 1,
): (
is_expanded: true,
),
(
index: 89,
generation: 1,
): (
is_expanded: true,
),
(
index: 74,
generation: 1,
): (
is_expanded: true,
),
(
index: 56,
generation: 1,
): (
is_expanded: true,
),
(
index: 57,
generation: 1,
): (
is_expanded: false,
),
(
index: 28,
generation: 1,
): (
is_expanded: false,
),
(
index: 94,
generation: 1,
): (
is_expanded: true,
),
(
index: 5,
generation: 1,
): (
is_expanded: true,
@ -802,25 +610,67 @@
is_expanded: true,
),
(
index: 58,
index: 54,
generation: 1,
): (
is_expanded: true,
),
(
index: 45,
index: 51,
generation: 1,
): (
is_expanded: true,
),
(
index: 37,
index: 82,
generation: 1,
): (
is_expanded: true,
),
(
index: 91,
generation: 1,
): (
is_expanded: true,
),
(
index: 81,
generation: 1,
): (
is_expanded: false,
),
(
index: 13,
index: 21,
generation: 1,
): (
is_expanded: false,
),
(
index: 27,
generation: 1,
): (
is_expanded: false,
),
(
index: 11,
generation: 1,
): (
is_expanded: false,
),
(
index: 95,
generation: 1,
): (
is_expanded: true,
),
(
index: 29,
generation: 1,
): (
is_expanded: true,
),
(
index: 0,
generation: 1,
): (
is_expanded: true,
@ -831,12 +681,162 @@
): (
is_expanded: false,
),
(
index: 49,
generation: 1,
): (
is_expanded: false,
),
(
index: 72,
generation: 1,
): (
is_expanded: false,
),
(
index: 69,
generation: 1,
): (
is_expanded: false,
),
(
index: 63,
generation: 1,
): (
is_expanded: false,
),
(
index: 2,
generation: 1,
): (
is_expanded: true,
),
(
index: 84,
generation: 1,
): (
is_expanded: false,
),
(
index: 1,
generation: 1,
): (
is_expanded: true,
),
(
index: 77,
generation: 1,
): (
is_expanded: true,
),
(
index: 42,
generation: 1,
): (
is_expanded: false,
),
(
index: 39,
generation: 1,
): (
is_expanded: false,
),
(
index: 24,
generation: 1,
): (
is_expanded: false,
),
(
index: 26,
generation: 1,
): (
is_expanded: true,
),
(
index: 34,
generation: 1,
): (
is_expanded: true,
),
(
index: 9,
generation: 1,
): (
is_expanded: false,
),
(
index: 44,
generation: 1,
): (
is_expanded: true,
),
(
index: 55,
generation: 1,
): (
is_expanded: true,
),
(
index: 19,
generation: 1,
): (
is_expanded: false,
),
(
index: 15,
generation: 1,
): (
is_expanded: true,
),
(
index: 43,
generation: 1,
): (
is_expanded: false,
),
(
index: 3,
generation: 1,
): (
is_expanded: true,
),
(
index: 45,
generation: 1,
): (
is_expanded: true,
),
(
index: 80,
generation: 1,
): (
is_expanded: true,
),
(
index: 14,
generation: 1,
): (
is_expanded: true,
),
(
index: 10,
generation: 1,
): (
is_expanded: true,
),
(
index: 22,
generation: 1,
): (
is_expanded: false,
),
(
index: 83,
generation: 1,
): (
is_expanded: true,
),
},
),
},