Add friction
This commit is contained in:
@@ -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 |
Reference in New Issue
Block a user