add mass to wheels

This commit is contained in:
Joe Ardent 2025-04-06 21:41:51 -07:00
parent eaba0edcd2
commit 722c40a259
2 changed files with 13 additions and 6 deletions

View file

@ -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,
)); ));

View file

@ -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());