Vehicle not driving forward

Discuss any questions about BEPUphysics or problems encountered.
Post Reply
CrazyXBMax
Posts: 4
Joined: Mon Feb 13, 2012 5:45 pm

Vehicle not driving forward

Post by CrazyXBMax »

Hi everyone,

I have a problem with the Vehicles in BepuPhysics. I'm using the Vehicle class from the demos but my vehicle is only driving backwards and not forward.

This is the code for taking input and applying it to the car. ForwardSpeed is 30 and BackwardSpeed -13.

Code: Select all

if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_UP))
{
         //Drive
         //Vehicle.Wheels[1].DrivingMotor.MaximumForwardForce = 100000;
         //Vehicle.Wheels[3].DrivingMotor.MaximumForwardForce = 100000;
         Vehicle.Wheels[1].DrivingMotor.TargetSpeed = ForwardSpeed;
         Vehicle.Wheels[3].DrivingMotor.TargetSpeed = ForwardSpeed;
}

if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_DOWN))
{
    //Reverse
    //Vehicle.Wheels[1].DrivingMotor.MaximumBackwardForce = 100000;
    //Vehicle.Wheels[3].DrivingMotor.MaximumBackwardForce = 100000;
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = BackwardSpeed;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = BackwardSpeed;
}
else
{
    //Idle
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = 0;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = 0;
}
if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_SPACE))
{
    //Brake
    foreach (Wheel wheel in Vehicle.Wheels)
    {
        wheel.Brake.IsBraking = true;
    }
}
else
{
    //Release brake
    foreach (Wheel wheel in Vehicle.Wheels)
    {
        wheel.Brake.IsBraking = false;
    }
}
The rest of the code including the steering is directly taken from the VehicleDemo code. Is there anything wrong with this code?
6thVenom
Posts: 12
Joined: Mon Sep 03, 2012 6:31 pm

Re: Vehicle not driving forward

Post by 6thVenom »

Code: Select all

if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_UP))
{
         //Drive
         Vehicle.Wheels[1].DrivingMotor.TargetSpeed = ForwardSpeed;
         Vehicle.Wheels[3].DrivingMotor.TargetSpeed = ForwardSpeed;
}

if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_DOWN))
{
    //Reverse
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = BackwardSpeed;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = BackwardSpeed;
}
else
{
    //Idle
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = 0;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = 0;
}
With that, if you're not pressing KC_DOWN the last TargetSpeed set is 0, even if you're pressing KC_UP.


You should try:

Code: Select all

if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_DOWN))
{
    //Reverse
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = BackwardSpeed;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = BackwardSpeed;
}
else if (keyboardInput.IsKeyDown(MOIS.KeyCode.KC_UP))
{
         //Drive
         Vehicle.Wheels[1].DrivingMotor.TargetSpeed = ForwardSpeed;
         Vehicle.Wheels[3].DrivingMotor.TargetSpeed = ForwardSpeed;
}
else
{
    //Idle
    Vehicle.Wheels[1].DrivingMotor.TargetSpeed = 0;
    Vehicle.Wheels[3].DrivingMotor.TargetSpeed = 0;
}
So that KC_DOWN always prior on KC_UP (for braking), then only if none, TargetSpeed = 0.
CrazyXBMax
Posts: 4
Joined: Mon Feb 13, 2012 5:45 pm

Re: Vehicle not driving forward

Post by CrazyXBMax »

Thank you! I can't believe I didn't see that.
Post Reply