Tweak with collider properites
...to fix unexplainable bugs
This commit is contained in:
parent
f48783f17b
commit
e7d3ef2b14
1 changed files with 18 additions and 4 deletions
22
src/main.rs
22
src/main.rs
|
|
@ -14,6 +14,7 @@ use glam::{Quat, Vec3, EulerRot};
|
|||
use glium::backend::glutin::SimpleWindowBuilder;
|
||||
use render::GliumRenderer;
|
||||
use rapier3d::prelude::*;
|
||||
use rapier3d::prelude::LockedAxes;
|
||||
use rapier3d::na::{UnitQuaternion, Quaternion};
|
||||
|
||||
fn main() -> Result<()> {
|
||||
|
|
@ -62,12 +63,19 @@ fn main() -> Result<()> {
|
|||
let ground_tr = *ecsr.world.get::<&Transform>(ground_ent).unwrap();
|
||||
let (axis, angle) = ground_tr.rotation.to_axis_angle();
|
||||
let rotation = vector![axis.x * angle, axis.y * angle, axis.z * angle];
|
||||
let ground_half_height = 0.1;
|
||||
let ground_half_extents_x = ground_tr.scale.x * 1.0;
|
||||
let ground_half_extents_z = ground_tr.scale.z * 1.0;
|
||||
let ground_pos = Isometry::new(
|
||||
vector![ground_tr.translation.x, ground_tr.translation.y, ground_tr.translation.z],
|
||||
vector![
|
||||
ground_tr.translation.x,
|
||||
ground_tr.translation.y - ground_half_height,
|
||||
ground_tr.translation.z
|
||||
],
|
||||
rotation,
|
||||
);
|
||||
let ground_rb = RigidBodyBuilder::fixed().position(ground_pos).build();
|
||||
let ground_collider = ColliderBuilder::cuboid(10.0, 0.1, 10.0).build();
|
||||
let ground_collider = ColliderBuilder::cuboid(ground_half_extents_x, ground_half_height, ground_half_extents_z).build();
|
||||
physics.add_rigid_body(ground_ent, ground_rb, ground_collider);
|
||||
|
||||
// Add physics for object
|
||||
|
|
@ -78,8 +86,14 @@ fn main() -> Result<()> {
|
|||
vector![object_tr.translation.x, object_tr.translation.y, object_tr.translation.z],
|
||||
rotation,
|
||||
);
|
||||
let object_rb = RigidBodyBuilder::dynamic().position(object_pos).build();
|
||||
let object_collider = ColliderBuilder::cylinder(2.0, 0.2).build();
|
||||
let object_rb = RigidBodyBuilder::dynamic()
|
||||
.position(object_pos)
|
||||
.locked_axes(LockedAxes::ROTATION_LOCKED_X | LockedAxes::ROTATION_LOCKED_Z)
|
||||
.angular_damping(5.0)
|
||||
.build();
|
||||
let object_radius = 0.2 * object_tr.scale.x;
|
||||
let object_half_height = 2.0 * object_tr.scale.y;
|
||||
let object_collider = ColliderBuilder::cylinder(object_half_height, object_radius).build();
|
||||
physics.add_rigid_body(object_ent, object_rb, object_collider);
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue