you can kill skeleton

This commit is contained in:
artem 2024-02-06 22:09:44 +03:00
parent a7eeec3d7d
commit 86356b3904
6 changed files with 473 additions and 410 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_wrapper11149 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11150 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11151 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11152 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_39);
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11153 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_32);
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_39);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11154 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_44);
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper11158 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9436, __wbg_adapter_32);
imports.wbg.__wbindgen_closure_wrapper11155 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_44);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper30811 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26005, __wbg_adapter_49);
imports.wbg.__wbindgen_closure_wrapper11159 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 9437, __wbg_adapter_32);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32229 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_52);
imports.wbg.__wbindgen_closure_wrapper30812 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26006, __wbg_adapter_49);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32230 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_52);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32231 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32232 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32233 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32234 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper32235 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26724, __wbg_adapter_55);
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper37781 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 30120, __wbg_adapter_68);
imports.wbg.__wbindgen_closure_wrapper32236 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 26725, __wbg_adapter_55);
return addHeapObject(ret);
};
imports.wbg.__wbindgen_closure_wrapper37782 = function(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 30121, __wbg_adapter_68);
return addHeapObject(ret);
};

View File

@ -32,6 +32,7 @@ enum Animations {
Idle = 0,
Run = 1,
Fight = 2,
Dead = 3,
}
const DISTANCE_TO_FIGHT: f32 = 0.5;
@ -48,6 +49,7 @@ pub struct Enemy {
animations: Vec<SpriteSheetAnimation>,
fight: bool,
win: bool,
dead: bool,
#[reflect(hidden)]
#[visit(skip)]
@ -67,7 +69,54 @@ impl Enemy {
self.attack_speed = 0.3;
}
fn intersections(&self, graph: &mut Graph, max_len: f32) -> Option<Vec<Intersection>> {
fn round(&self, a: f32) -> i32 {
return a.round() as i32;
}
fn intersections_box(&self, graph: &mut Graph) -> bool {
let self_node = match graph.try_get(self.handle) {
Some(node) => node,
None => return false,
};
let self_position = self_node.global_position();
// Cast a ray from *this* node in the direction of the player node
let mut buffer = Vec::<Intersection>::new();
graph.physics2d.cast_ray(
RayCastOptions {
ray_origin: Point2::new(self_position.x, self_position.y),
ray_direction: Vector2::new(0.0, 2.0),
max_len: 0.8,
groups: InteractionGroups::default(),
// Sort the results by distance
sort_results: true,
},
// Store the collisions in the vector
&mut buffer,
);
if buffer.len() == 0 {
return false;
}
for i in 0..buffer.len() {
if self.player_handle == buffer[i].collider {
continue;
}
if buffer[i].toi == 0.0 {
continue;
}
if self.round(buffer[i].position[0]) != self.round(self_position.x) {
continue;
}
if self.round(buffer[i].position[1]) == self.round(self_position.y) {
continue;
}
return true
}
return false;
}
fn intersections_player(&self, graph: &mut Graph, max_len: f32) -> Option<Vec<Intersection>> {
// Get *this* node instance
let self_node = match graph.try_get(self.handle) {
Some(node) => node,
@ -114,7 +163,7 @@ impl Enemy {
}
fn attack_player(&mut self, graph: &mut Graph) {
let collaider = self.intersections(graph, 1.);
let collaider = self.intersections_player(graph, 1.);
if let Some(collaider_data) = collaider {
for i in 0..collaider_data.len() {
if collaider_data[i].collider != self.player_collider {
@ -166,7 +215,13 @@ impl Enemy {
}
fn get_speed(&self, context: &mut ScriptContext) -> f32 {
let collaider = self.intersections(&mut context.scene.graph, 5.);
if self.dead {
return 0.0;
}
if self.win {
return 0.0;
}
let collaider = self.intersections_player(&mut context.scene.graph, 5.);
let mut see_player: bool = false;
if let Some(collaider_data) = collaider {
for i in 0..collaider_data.len() {
@ -241,12 +296,18 @@ impl Enemy {
if self.fight {
self.current_animation = Animations::Fight;
}
if self.dead {
self.current_animation = Animations::Dead;
}
}
fn set_fight(&mut self, context: &mut ScriptContext) {
if self.win {
return;
}
if self.dead {
return;
}
let distance = self.distance_to_player(context);
self.fight = distance < DISTANCE_TO_FIGHT && distance > -1.0 * DISTANCE_TO_FIGHT;
if !self.fight {
@ -316,6 +377,9 @@ impl ScriptTrait for Enemy {
}
fn on_update(&mut self, context: &mut ScriptContext) {
if self.intersections_box(&mut context.scene.graph) {
self.dead = true
}
self.change_orientation(context);
self.animation_do(context);
self.move_do(context);

View File

@ -1,20 +1,14 @@
use fyrox::{
asset::manager::ResourceManager,
core::sstorage::ImmutableString,
core::{algebra::Vector2, algebra::Vector3, math::Rect},
material::shader::SamplerFallback,
material::{Material, MaterialResource, PropertyValue},
core::{algebra::{Vector2, Vector3}, math::Rect, sstorage::ImmutableString},
material::{shader::SamplerFallback, Material, MaterialResource, PropertyValue},
resource::texture::Texture,
scene::{
base::BaseBuilder,
dim2::{
base::BaseBuilder, collider::InteractionGroups, dim2::{
collider::{ColliderBuilder, ColliderShape, CuboidShape},
rectangle::RectangleBuilder,
rigidbody::RigidBodyBuilder,
},
graph::Graph,
rigidbody::RigidBodyType,
transform::TransformBuilder,
}, graph::Graph, rigidbody::RigidBodyType, transform::TransformBuilder
},
};
// /mnt/23154027-2dd3-43ea-93f1-02a8df7a3c5a/projects/fyrox/platformer/assets/data/tiles/
@ -59,6 +53,8 @@ fn build_dynamic_block(
.build(graph),
ColliderBuilder::new(BaseBuilder::new())
.with_shape(shape)
.with_collision_groups(InteractionGroups::default())
.with_solver_groups(InteractionGroups::default())
.build(graph),
])
// Optional, set name of tile
@ -254,5 +250,8 @@ pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager) {
build_air_island_block(resource_manager, graph, -18.0, bottom_y + 4.0);
build_air_island_block(resource_manager, graph, -21.0, bottom_y + 5.5);
// TODO: for test collision
// build_box_block(resource_manager, graph, 7.5, bottom_y+ 2.5);
}

View File

@ -322,79 +322,37 @@
),
node_infos: {
(
index: 65,
generation: 1,
): (
is_expanded: true,
),
(
index: 82,
generation: 1,
): (
is_expanded: true,
),
(
index: 53,
generation: 1,
): (
is_expanded: true,
),
(
index: 18,
generation: 1,
): (
is_expanded: true,
),
(
index: 45,
generation: 1,
): (
is_expanded: true,
),
(
index: 28,
index: 69,
generation: 1,
): (
is_expanded: false,
),
(
index: 33,
generation: 1,
): (
is_expanded: true,
),
(
index: 16,
generation: 1,
): (
is_expanded: true,
),
(
index: 48,
generation: 1,
): (
is_expanded: true,
),
(
index: 4,
generation: 1,
): (
is_expanded: true,
),
(
index: 39,
index: 66,
generation: 1,
): (
is_expanded: false,
),
(
index: 22,
index: 71,
generation: 1,
): (
is_expanded: true,
),
(
index: 21,
generation: 1,
): (
is_expanded: false,
),
(
index: 7,
index: 11,
generation: 1,
): (
is_expanded: false,
),
(
index: 77,
generation: 1,
): (
is_expanded: true,
@ -406,67 +364,7 @@
is_expanded: true,
),
(
index: 2,
generation: 1,
): (
is_expanded: true,
),
(
index: 40,
generation: 1,
): (
is_expanded: true,
),
(
index: 15,
generation: 1,
): (
is_expanded: true,
),
(
index: 84,
generation: 1,
): (
is_expanded: false,
),
(
index: 20,
generation: 1,
): (
is_expanded: true,
),
(
index: 51,
generation: 1,
): (
is_expanded: true,
),
(
index: 78,
generation: 1,
): (
is_expanded: false,
),
(
index: 90,
generation: 1,
): (
is_expanded: false,
),
(
index: 36,
generation: 1,
): (
is_expanded: false,
),
(
index: 95,
generation: 1,
): (
is_expanded: true,
),
(
index: 80,
index: 62,
generation: 1,
): (
is_expanded: true,
@ -478,115 +376,61 @@
is_expanded: false,
),
(
index: 63,
generation: 1,
): (
is_expanded: false,
),
(
index: 26,
index: 65,
generation: 1,
): (
is_expanded: true,
),
(
index: 86,
index: 10,
generation: 1,
): (
is_expanded: true,
),
(
index: 66,
generation: 1,
): (
is_expanded: false,
),
(
index: 57,
generation: 1,
): (
is_expanded: false,
),
(
index: 44,
index: 51,
generation: 1,
): (
is_expanded: true,
),
(
index: 35,
index: 16,
generation: 1,
): (
is_expanded: true,
),
(
index: 29,
index: 14,
generation: 1,
): (
is_expanded: true,
),
(
index: 6,
index: 20,
generation: 1,
): (
is_expanded: true,
),
(
index: 1,
index: 82,
generation: 1,
): (
is_expanded: true,
),
(
index: 34,
index: 58,
generation: 1,
): (
is_expanded: true,
),
(
index: 23,
index: 53,
generation: 1,
): (
is_expanded: true,
),
(
index: 93,
generation: 1,
): (
is_expanded: false,
),
(
index: 3,
generation: 1,
): (
is_expanded: true,
),
(
index: 77,
generation: 1,
): (
is_expanded: true,
),
(
index: 56,
generation: 1,
): (
is_expanded: true,
),
(
index: 0,
generation: 1,
): (
is_expanded: true,
),
(
index: 94,
generation: 1,
): (
is_expanded: true,
),
(
index: 31,
index: 2,
generation: 1,
): (
is_expanded: true,
@ -598,199 +442,13 @@
is_expanded: true,
),
(
index: 62,
index: 4,
generation: 1,
): (
is_expanded: true,
),
(
index: 43,
generation: 1,
): (
is_expanded: false,
),
(
index: 89,
generation: 1,
): (
is_expanded: true,
),
(
index: 83,
generation: 1,
): (
is_expanded: true,
),
(
index: 74,
generation: 1,
): (
is_expanded: true,
),
(
index: 11,
generation: 1,
): (
is_expanded: false,
),
(
index: 37,
generation: 1,
): (
is_expanded: false,
),
(
index: 25,
generation: 1,
): (
is_expanded: false,
),
(
index: 12,
generation: 1,
): (
is_expanded: false,
),
(
index: 19,
generation: 1,
): (
is_expanded: false,
),
(
index: 47,
generation: 1,
): (
is_expanded: true,
),
(
index: 41,
generation: 1,
): (
is_expanded: true,
),
(
index: 59,
generation: 1,
): (
is_expanded: true,
),
(
index: 5,
generation: 1,
): (
is_expanded: true,
),
(
index: 91,
generation: 1,
): (
is_expanded: true,
),
(
index: 38,
generation: 1,
): (
is_expanded: true,
),
(
index: 8,
generation: 1,
): (
is_expanded: false,
),
(
index: 58,
generation: 1,
): (
is_expanded: true,
),
(
index: 71,
generation: 1,
): (
is_expanded: true,
),
(
index: 46,
generation: 1,
): (
is_expanded: false,
),
(
index: 75,
generation: 1,
): (
is_expanded: false,
),
(
index: 24,
generation: 1,
): (
is_expanded: false,
),
(
index: 13,
generation: 1,
): (
is_expanded: true,
),
(
index: 50,
generation: 1,
): (
is_expanded: true,
),
(
index: 49,
generation: 1,
): (
is_expanded: false,
),
(
index: 69,
generation: 1,
): (
is_expanded: false,
),
(
index: 92,
generation: 1,
): (
is_expanded: true,
),
(
index: 9,
generation: 1,
): (
is_expanded: false,
),
(
index: 54,
generation: 1,
): (
is_expanded: true,
),
(
index: 81,
generation: 1,
): (
is_expanded: false,
),
(
index: 14,
generation: 1,
): (
is_expanded: true,
),
(
index: 72,
generation: 1,
): (
is_expanded: false,
),
(
index: 17,
index: 93,
generation: 1,
): (
is_expanded: false,
@ -801,6 +459,228 @@
): (
is_expanded: false,
),
(
index: 38,
generation: 1,
): (
is_expanded: true,
),
(
index: 31,
generation: 1,
): (
is_expanded: true,
),
(
index: 13,
generation: 1,
): (
is_expanded: true,
),
(
index: 33,
generation: 1,
): (
is_expanded: true,
),
(
index: 78,
generation: 1,
): (
is_expanded: false,
),
(
index: 37,
generation: 1,
): (
is_expanded: false,
),
(
index: 57,
generation: 1,
): (
is_expanded: false,
),
(
index: 18,
generation: 1,
): (
is_expanded: true,
),
(
index: 47,
generation: 1,
): (
is_expanded: true,
),
(
index: 63,
generation: 1,
): (
is_expanded: false,
),
(
index: 40,
generation: 1,
): (
is_expanded: true,
),
(
index: 56,
generation: 1,
): (
is_expanded: true,
),
(
index: 74,
generation: 1,
): (
is_expanded: true,
),
(
index: 59,
generation: 1,
): (
is_expanded: true,
),
(
index: 48,
generation: 1,
): (
is_expanded: true,
),
(
index: 5,
generation: 1,
): (
is_expanded: true,
),
(
index: 39,
generation: 1,
): (
is_expanded: false,
),
(
index: 3,
generation: 1,
): (
is_expanded: true,
),
(
index: 24,
generation: 1,
): (
is_expanded: false,
),
(
index: 80,
generation: 1,
): (
is_expanded: true,
),
(
index: 81,
generation: 1,
): (
is_expanded: false,
),
(
index: 12,
generation: 1,
): (
is_expanded: false,
),
(
index: 45,
generation: 1,
): (
is_expanded: true,
),
(
index: 17,
generation: 1,
): (
is_expanded: false,
),
(
index: 83,
generation: 1,
): (
is_expanded: true,
),
(
index: 29,
generation: 1,
): (
is_expanded: true,
),
(
index: 43,
generation: 1,
): (
is_expanded: false,
),
(
index: 28,
generation: 1,
): (
is_expanded: false,
),
(
index: 84,
generation: 1,
): (
is_expanded: false,
),
(
index: 95,
generation: 1,
): (
is_expanded: true,
),
(
index: 7,
generation: 1,
): (
is_expanded: true,
),
(
index: 44,
generation: 1,
): (
is_expanded: true,
),
(
index: 90,
generation: 1,
): (
is_expanded: false,
),
(
index: 15,
generation: 1,
): (
is_expanded: true,
),
(
index: 91,
generation: 1,
): (
is_expanded: true,
),
(
index: 52,
generation: 1,
): (
is_expanded: true,
),
(
index: 94,
generation: 1,
): (
is_expanded: true,
),
(
index: 60,
generation: 1,
@ -808,7 +688,19 @@
is_expanded: false,
),
(
index: 10,
index: 22,
generation: 1,
): (
is_expanded: false,
),
(
index: 23,
generation: 1,
): (
is_expanded: true,
),
(
index: 41,
generation: 1,
): (
is_expanded: true,
@ -820,7 +712,97 @@
is_expanded: false,
),
(
index: 21,
index: 34,
generation: 1,
): (
is_expanded: true,
),
(
index: 86,
generation: 1,
): (
is_expanded: true,
),
(
index: 49,
generation: 1,
): (
is_expanded: false,
),
(
index: 54,
generation: 1,
): (
is_expanded: true,
),
(
index: 92,
generation: 1,
): (
is_expanded: true,
),
(
index: 8,
generation: 1,
): (
is_expanded: false,
),
(
index: 19,
generation: 1,
): (
is_expanded: false,
),
(
index: 25,
generation: 1,
): (
is_expanded: false,
),
(
index: 36,
generation: 1,
): (
is_expanded: false,
),
(
index: 6,
generation: 1,
): (
is_expanded: true,
),
(
index: 72,
generation: 1,
): (
is_expanded: false,
),
(
index: 9,
generation: 1,
): (
is_expanded: false,
),
(
index: 50,
generation: 1,
): (
is_expanded: true,
),
(
index: 75,
generation: 1,
): (
is_expanded: false,
),
(
index: 26,
generation: 1,
): (
is_expanded: true,
),
(
index: 46,
generation: 1,
): (
is_expanded: false,
@ -832,7 +814,25 @@
is_expanded: true,
),
(
index: 52,
index: 35,
generation: 1,
): (
is_expanded: true,
),
(
index: 89,
generation: 1,
): (
is_expanded: true,
),
(
index: 1,
generation: 1,
): (
is_expanded: true,
),
(
index: 0,
generation: 1,
): (
is_expanded: true,