@@ 154,7 154,7 @@ fn main() {
fn setup_integration_parameters(mut context: ResMut<RapierContext>) {
context.integration_parameters.dt = 1.0 / 20.0;
- context.integration_parameters.joint_erp = 0.2;
+ context.integration_parameters.joint_erp = 0.01;
context.integration_parameters.erp = 0.1;
//context.integration_parameters.num_solver_iterations = NonZeroUsize::new(1).unwrap();
//context.integration_parameters.num_internal_pgs_iterations = 1;
@@ 2017,7 2017,7 @@ fn search_thrusters(
force.torque += thruster_force.torque;
*energy -= energy_lose_by;
}
- if -0.48 < relative_pos.y && relative_pos.y < 0.48 {
+ /*if -0.48 < relative_pos.y && relative_pos.y < 0.48 {
let thruster_force = ExternalForce::at_point(
Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
transform.translation.xy(),
@@ 2026,7 2026,7 @@ fn search_thrusters(
force.force += thruster_force.force;
force.torque += thruster_force.torque;
*energy -= energy_lose_by;
- }
+ }*/
}
if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. {
if relative_pos.y > 0.48 {
@@ 2039,7 2039,59 @@ fn search_thrusters(
force.torque += thruster_force.torque;
*energy -= energy_lose_by;
}
- if -0.48 < relative_pos.y && relative_pos.y < 0.48 {
+ /*if -0.48 < relative_pos.y && relative_pos.y < 0.48 {
+ let thruster_force = ExternalForce::at_point(
+ Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
+ transform.translation.xy(),
+ transform.translation.xy(),
+ );
+ force.force += thruster_force.force;
+ force.torque += thruster_force.torque;
+ *energy -= energy_lose_by;
+ }*/
+ }
+ }
+ if input.right {
+ if ((0. < relative_angle && relative_angle < PI / 4.)
+ || (7. * PI / 4. < relative_angle && relative_angle < 2. * PI))
+ && relative_pos.x > 0.48
+ {
+ let thruster_force = ExternalForce::at_point(
+ Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
+ transform.translation.xy(),
+ transform.translation.xy(),
+ );
+ force.force += thruster_force.force;
+ force.torque += thruster_force.torque;
+ *energy -= energy_lose_by;
+ }
+ if 3. * PI / 4. < relative_angle
+ && relative_angle < 5. * PI / 4.
+ && relative_pos.x < -0.48
+ {
+ let thruster_force = ExternalForce::at_point(
+ Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
+ transform.translation.xy(),
+ transform.translation.xy(),
+ );
+ force.force += thruster_force.force;
+ force.torque += thruster_force.torque;
+ *energy -= energy_lose_by;
+ }
+ if PI / 4. < relative_angle && relative_angle < 3. * PI / 4. {
+ if relative_pos.y > 0.48 {
+ let thruster_force = ExternalForce::at_point(
+ Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
+ transform.translation.xy(),
+ transform.translation.xy(),
+ );
+ force.force += thruster_force.force;
+ force.torque += thruster_force.torque;
+ *energy -= energy_lose_by;
+ }
+ }
+ if 5. * PI / 4. < relative_angle && relative_angle < 7. * PI / 4. {
+ if relative_pos.y < -0.48 {
let thruster_force = ExternalForce::at_point(
Vec2::new(-force_mult * angle.sin(), force_mult * angle.cos()),
transform.translation.xy(),