diff --git a/src/action/systems.rs b/src/action/systems.rs index a9e77b7..4ab63e8 100644 --- a/src/action/systems.rs +++ b/src/action/systems.rs @@ -100,7 +100,7 @@ pub(super) fn apply_inputs( // steering let mut steering = steering.single_mut(); let angle = yaw_to_angle(input.yaw); - let angle = if angle.is_normal() { angle } else { 0.0 }; + let angle = if angle.is_normal() { -angle } else { 0.0 }; let limit = AngleLimit::new(angle - 0.01, angle + 0.01); steering.angle_limit = Some(limit); } diff --git a/src/bike/body.rs b/src/bike/body.rs index e40c78e..a5f3330 100644 --- a/src/bike/body.rs +++ b/src/bike/body.rs @@ -1,4 +1,8 @@ -use avian3d::prelude::*; +use avian3d::prelude::{ + AngularDamping, AngularVelocity, CoefficientCombine, Collider, ColliderDensity, + CollisionLayers, ExternalTorque, Friction, LinearDamping, LinearVelocity, Restitution, + RigidBody, SleepingDisabled, +}; use bevy::{ core::Name, prelude::{AssetServer, BuildChildren, Commands, Quat, Res, SpatialBundle, Transform, Vec3}, diff --git a/src/bike/wheels.rs b/src/bike/wheels.rs index d91f2dd..e6ba2f1 100644 --- a/src/bike/wheels.rs +++ b/src/bike/wheels.rs @@ -1,5 +1,14 @@ -use avian3d::{math::FRAC_PI_2, prelude::*}; -use bevy::prelude::*; +use avian3d::{ + math::FRAC_PI_2, + prelude::{ + Collider, ColliderDensity, CollisionLayers, CollisionMargin, ExternalTorque, FixedJoint, + Friction, Joint, MassPropertiesBundle, Restitution, RevoluteJoint, RigidBody, SweptCcd, + }, +}; +use bevy::prelude::{ + AlphaMode, Assets, Color, Commands, Entity, Mesh, Name, PbrBundle, Quat, ResMut, Sphere, + StandardMaterial, Torus, Transform, Vec3, +}; use super::{CyberSteering, CyberWheel, Meshterial, WheelConfig}; use crate::ColliderGroups; @@ -50,6 +59,7 @@ pub fn spawn_wheels( mesh.clone(), collider.clone(), conf, + steering.is_some(), ); if let Some(steering) = steering { @@ -75,6 +85,7 @@ fn wheels_helper( tire_mesh: Mesh, collider: Collider, conf: &WheelConfig, + is_front: bool, ) -> Entity { let wheel_material = &StandardMaterial { base_color: Color::srgb(0.01, 0.01, 0.01), @@ -83,14 +94,17 @@ fn wheels_helper( ..Default::default() }; + let pos_name = if is_front { "front" } else { "rear" }; + let xform = Transform::from_translation(position); let hub_mesh: Mesh = Sphere::new(0.1).into(); let hub = commands .spawn(( - Name::new("hub"), + Name::new(format!("{pos_name} hub")), RigidBody::Dynamic, - MassPropertiesBundle::new_computed(&Collider::sphere(0.1), 200.0), + MassPropertiesBundle::new_computed(&Collider::sphere(0.1), 1000.0), + CollisionLayers::NONE, PbrBundle { mesh: meshes.add(hub_mesh), material: materials.add(wheel_material.clone()), @@ -102,7 +116,7 @@ fn wheels_helper( let tire = commands .spawn(( - Name::new("tire"), + Name::new(format!("{pos_name} tire")), PbrBundle { mesh: meshes.add(tire_mesh), material: materials.add(wheel_material.clone()),