fix reverse on gamepad and mouse controller

pull/18/head
Riccardo Venturini 2024-02-16 14:11:21 +00:00
parent f19e940c3a
commit e4a4d22374
2 changed files with 32 additions and 4 deletions

View File

@ -121,6 +121,12 @@ export const PlayerController = ({
} else if (rightPressed && currentSpeed > 0) { } else if (rightPressed && currentSpeed > 0) {
steeringAngle = -currentSteeringSpeed; steeringAngle = -currentSteeringSpeed;
targetXPosition = camMaxOffset; targetXPosition = camMaxOffset;
} else if (rightPressed && currentSpeed < 0) {
steeringAngle = currentSteeringSpeed;
targetXPosition = -camMaxOffset;
} else if (leftPressed && currentSpeed < 0) {
steeringAngle = -currentSteeringSpeed;
targetXPosition = camMaxOffset;
} else { } else {
steeringAngle = 0; steeringAngle = 0;
targetXPosition = 0; targetXPosition = 0;
@ -182,13 +188,24 @@ export const PlayerController = ({
} }
// REVERSING // REVERSING
if (downPressed && currentSpeed < -maxSpeed) { if (downPressed) {
if (currentSteeringSpeed < MaxSteeringSpeed) {
setCurrentSteeringSpeed(
Math.min(
currentSteeringSpeed + 0.0001 * delta * 144,
MaxSteeringSpeed
)
);
}
}
if (downPressed && currentSpeed <= 0) {
setCurrentSpeed( setCurrentSpeed(
Math.max(currentSpeed - acceleration * delta * 144, -maxSpeed) Math.max(currentSpeed - acceleration * delta * 144, -maxSpeed)
); );
} }
// DECELERATING // DECELERATING
else if (!upPressed && !downPressed) { else if (!upPressed) {
if (currentSteeringSpeed > 0) { if (currentSteeringSpeed > 0) {
setCurrentSteeringSpeed( setCurrentSteeringSpeed(
Math.max(currentSteeringSpeed - 0.00005 * delta * 144, 0) Math.max(currentSteeringSpeed - 0.00005 * delta * 144, 0)

View File

@ -165,13 +165,24 @@ export const PlayerControllerGamepad = ({
} }
// REVERSING // REVERSING
if (buttonB && currentSpeed < -maxSpeed) { if (buttonB) {
if (currentSteeringSpeed < MaxSteeringSpeed) {
setCurrentSteeringSpeed(
Math.min(
currentSteeringSpeed + 0.0001 * delta * 144,
MaxSteeringSpeed
)
);
}
}
if (buttonB && currentSpeed <= 0) {
setCurrentSpeed( setCurrentSpeed(
Math.max(currentSpeed - acceleration * delta * 144, -maxSpeed) Math.max(currentSpeed - acceleration * delta * 144, -maxSpeed)
); );
} }
// DECELERATING // DECELERATING
else if (!buttonA && !buttonB) { else if (!buttonA) {
if (currentSteeringSpeed > 0) { if (currentSteeringSpeed > 0) {
setCurrentSteeringSpeed( setCurrentSteeringSpeed(
Math.max(currentSteeringSpeed - 0.00005 * delta * 144, 0) Math.max(currentSteeringSpeed - 0.00005 * delta * 144, 0)