Add friction

This commit is contained in:
2025-12-13 22:50:42 -08:00
parent 6418c10415
commit d4e1bf5b9e

View File

@@ -86,6 +86,7 @@
let velocity = [0, 0]; // meters per second let velocity = [0, 0]; // meters per second
let acceleration = [0, 0]; // meters per second per second let acceleration = [0, 0]; // meters per second per second
let previous, zero, frameCount = 0; let previous, zero, frameCount = 0;
let friction = 7.5;
requestAnimationFrame(firstFrame); requestAnimationFrame(firstFrame);
@@ -109,10 +110,17 @@
} }
let [velocityX, velocityY] = velocity; let [velocityX, velocityY] = velocity;
let [accelerationX, accelerationY] = acceleration;
const [accelerationX, accelerationY] = acceleration; if (velocityX > 0) accelerationX += -friction;
else if (velocityX < 0) accelerationX += friction;
velocity = [velocityX + accelerationX, velocityY + accelerationY]; if (velocityY > 0) accelerationY += -friction;
else if (velocityY < 0) accelerationY += friction;
velocityX = velocityX > 0 && velocityX + accelerationX < 0 ? 0 : velocityX + accelerationX;
velocityY = velocityY > 0 && velocityY + accelerationY < 0 ? 0 : velocityY + accelerationY;
velocity = [velocityX, velocityY];
const changeX = 0.001 * elapsed * velocityX; const changeX = 0.001 * elapsed * velocityX;
const changeY = 0.001 * elapsed * velocityY; const changeY = 0.001 * elapsed * velocityY;
@@ -312,8 +320,10 @@
// console.log("after", pkf.transform, fkf.transform); // console.log("after", pkf.transform, fkf.transform);
} }
let force = 10;
leftTurnButton.addEventListener("mousedown", function (e) { leftTurnButton.addEventListener("mousedown", function (e) {
acceleration[0] = -1; acceleration[0] = -force;
// tankTurn.playbackRate = 1; // tankTurn.playbackRate = 1;
// tankTurn.play(); // tankTurn.play();
}); });
@@ -326,7 +336,7 @@
}); });
rightTurnButton.addEventListener("mousedown", function (e) { rightTurnButton.addEventListener("mousedown", function (e) {
acceleration[0] = 1; acceleration[0] = force;
// tankTurn.playbackRate = -1; // tankTurn.playbackRate = -1;
// tankTurn.play(); // tankTurn.play();
@@ -340,7 +350,7 @@
}); });
reverseMoveButton.addEventListener("mousedown", function (e) { reverseMoveButton.addEventListener("mousedown", function (e) {
acceleration[1] = -1; // meters per second per second acceleration[1] = -force; // meters per second per second
// tankMove.playbackRate = -1; // tankMove.playbackRate = -1;
// tankMove.play(); // tankMove.play();
@@ -356,7 +366,7 @@
forwardMoveButton.addEventListener("mousedown", function (e) { forwardMoveButton.addEventListener("mousedown", function (e) {
// tankMove.playbackRate = 1; // tankMove.playbackRate = 1;
// tankMove.play(); // tankMove.play();
acceleration[1] = 1; // meters per second per second acceleration[1] = force; // meters per second per second
}); });
forwardMoveButton.addEventListener("mouseup", function (e) { forwardMoveButton.addEventListener("mouseup", function (e) {

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB