Add axels to the wheels.
This commit is contained in:
parent
421f34fab7
commit
d2961bd448
4 changed files with 20 additions and 12 deletions
|
@ -32,7 +32,8 @@ pub(super) fn gravity(
|
|||
settings: Res<MovementSettings>,
|
||||
) {
|
||||
let (xform, mut forces, mprops) = query.single_mut();
|
||||
let grav = xform.translation.normalize() * -settings.gravity * mprops.0.mass;
|
||||
//let grav = xform.translation.normalize() * -settings.gravity * mprops.0.mass;
|
||||
let grav = Vec3::Y * -settings.gravity * mprops.0.mass;
|
||||
forces.force = grav;
|
||||
forces.torque = Vec3::ZERO;
|
||||
}
|
||||
|
@ -45,7 +46,8 @@ pub(super) fn falling_cat(
|
|||
#[cfg(feature = "inspector")] mut debug_instant: ResMut<ActionDebugInstant>,
|
||||
) {
|
||||
let (xform, mut forces, mut control_vars) = bike_query.single_mut();
|
||||
let wup = xform.translation.normalize();
|
||||
//let wup = xform.translation.normalize();
|
||||
let wup = Vec3::Y;
|
||||
let bike_up = xform.up();
|
||||
|
||||
let wright = xform.forward().cross(wup).normalize();
|
||||
|
|
|
@ -51,7 +51,7 @@ pub(super) fn spawn_cyberbike(
|
|||
.spawn(RigidBody::Dynamic)
|
||||
.insert(spatialbundle)
|
||||
.insert((
|
||||
Collider::capsule(Vec3::new(0.0, 0.0, -0.7), Vec3::new(0.0, 0.0, 1.0), 0.50),
|
||||
Collider::capsule(Vec3::new(0.0, 0.0, -0.65), Vec3::new(0.0, 0.0, 0.8), 0.50),
|
||||
bike_collision_group,
|
||||
mass_properties,
|
||||
damping,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use bevy::prelude::{shape::UVSphere as Tire, *};
|
||||
use bevy_rapier3d::prelude::{
|
||||
Ccd, Collider, ColliderMassProperties, CollisionGroups, Damping, ExternalForce, Friction,
|
||||
MultibodyJoint, PrismaticJointBuilder, Restitution, RigidBody, Sleeping,
|
||||
MultibodyJoint, PrismaticJointBuilder, Restitution, RevoluteJointBuilder, RigidBody, Sleeping,
|
||||
TransformInterpolation,
|
||||
};
|
||||
|
||||
|
@ -80,19 +80,25 @@ pub fn spawn_tires(
|
|||
let mass_props = ColliderMassProperties::Density(0.1);
|
||||
|
||||
let damping = conf.damping;
|
||||
let prismatic = PrismaticJointBuilder::new(Vec3::Y)
|
||||
let prismatic_builder = PrismaticJointBuilder::new(Vec3::Y)
|
||||
.local_anchor1(offset)
|
||||
.limits(limits)
|
||||
.motor_position(-0.1, stiffness, damping);
|
||||
let joint = MultibodyJoint::new(bike, prismatic);
|
||||
.motor_position(limits[0], stiffness, damping);
|
||||
let prismatic_joint = MultibodyJoint::new(bike, prismatic_builder);
|
||||
|
||||
let fork_rb_entity = commands
|
||||
.spawn(RigidBody::Dynamic)
|
||||
.insert(prismatic_joint)
|
||||
.id();
|
||||
|
||||
let revolute_builder = RevoluteJointBuilder::new(Vec3::X);
|
||||
let axel_joint = MultibodyJoint::new(fork_rb_entity, revolute_builder);
|
||||
|
||||
let spatial_bundle = SpatialBundle {
|
||||
transform: wheel_pos_in_world,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let tire_spundle = SpatialBundle {
|
||||
transform: Transform::IDENTITY,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
|
@ -105,7 +111,7 @@ pub fn spawn_tires(
|
|||
wheel_damping,
|
||||
ccd,
|
||||
not_sleeping,
|
||||
joint,
|
||||
axel_joint,
|
||||
wheels_collision_group,
|
||||
friction,
|
||||
CyberWheel,
|
||||
|
|
|
@ -16,8 +16,8 @@ fn update_debug_cam(mut offset: ResMut<DebugCamOffset>, mut keys: ResMut<Input<K
|
|||
|
||||
for key in keyset {
|
||||
match key {
|
||||
KeyCode::Left => offset.rot += 5.0,
|
||||
KeyCode::Right => offset.rot -= 5.0,
|
||||
KeyCode::Left => offset.rot -= 5.0,
|
||||
KeyCode::Right => offset.rot += 5.0,
|
||||
KeyCode::Up => {
|
||||
if shifted {
|
||||
offset.alt += 0.5;
|
||||
|
|
Loading…
Reference in a new issue