add mass to wheels
This commit is contained in:
parent
eaba0edcd2
commit
722c40a259
2 changed files with 13 additions and 6 deletions
|
@ -226,6 +226,9 @@ fn wheel_mesh(
|
||||||
Mesh3d(meshes.add(tire_mesh)),
|
Mesh3d(meshes.add(tire_mesh)),
|
||||||
MeshMaterial3d(materials.add(wheel_material.clone())),
|
MeshMaterial3d(materials.add(wheel_material.clone())),
|
||||||
xform,
|
xform,
|
||||||
|
Collider::sphere(WHEEL_RADIUS),
|
||||||
|
ColliderDensity(0.5),
|
||||||
|
CollisionLayers::NONE,
|
||||||
TransformInterpolation,
|
TransformInterpolation,
|
||||||
wheel,
|
wheel,
|
||||||
));
|
));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use avian3d::{math::Scalar, prelude::*};
|
use avian3d::{math::Scalar, prelude::*};
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
|
|
||||||
const DRAG_COEFF: Scalar = 0.1;
|
const DRAG_COEFF: Scalar = 0.00001;
|
||||||
|
|
||||||
#[derive(Resource, Default, Debug, Reflect)]
|
#[derive(Resource, Default, Debug, Reflect)]
|
||||||
#[reflect(Resource)]
|
#[reflect(Resource)]
|
||||||
|
@ -20,9 +20,9 @@ pub struct CatControllerSettings {
|
||||||
impl Default for CatControllerSettings {
|
impl Default for CatControllerSettings {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
kp: 16.0,
|
kp: 45.0,
|
||||||
kd: 2.0,
|
kd: 15.0,
|
||||||
ki: 0.9,
|
ki: 1.0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ mod systems {
|
||||||
let bike_vel = bike_vel.0;
|
let bike_vel = bike_vel.0;
|
||||||
|
|
||||||
let dt = time.delta().as_secs_f32();
|
let dt = time.delta().as_secs_f32();
|
||||||
let max_thrust = 2000.0;
|
let max_thrust = 5000.0;
|
||||||
let yaw_angle = -yaw_to_angle(input.yaw);
|
let yaw_angle = -yaw_to_angle(input.yaw);
|
||||||
|
|
||||||
for (mut state, config, wheel) in wheels.iter_mut() {
|
for (mut state, config, wheel) in wheels.iter_mut() {
|
||||||
|
@ -345,7 +345,11 @@ mod systems {
|
||||||
let dir = vel.normalize_or_zero();
|
let dir = vel.normalize_or_zero();
|
||||||
let drag = -dspeed * dt * DRAG_COEFF * dir;
|
let drag = -dspeed * dt * DRAG_COEFF * dir;
|
||||||
if speed > 1.0 {
|
if speed > 1.0 {
|
||||||
force.apply_force_at_point(drag, xform.translation, xform.translation);
|
force.apply_force_at_point(
|
||||||
|
drag,
|
||||||
|
xform.translation - (0.25 * *xform.down()),
|
||||||
|
xform.translation,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
bevy::log::debug!("speed: {}, drag force: {}", speed, drag.length());
|
bevy::log::debug!("speed: {}, drag force: {}", speed, drag.length());
|
||||||
|
|
Loading…
Reference in a new issue