adjusted movement

This commit is contained in:
jpez 2022-04-28 17:58:53 +01:00
parent 98aa53685a
commit 3cc0125afb
2 changed files with 42 additions and 15 deletions

View File

@ -1,4 +1,6 @@
/* player movement logic */ /* player movement logic */
currentKey = 0;
lastKey = 0;
function setVars() { function setVars() {
let player = document.getElementById("player"); let player = document.getElementById("player");
@ -12,18 +14,18 @@ function verticalMovement(keyCode) {
switch(keyCode) { switch(keyCode) {
case 38: /*Up*/ case 38: /*Up*/
case 87: /*W*/ case 87: /*W*/
var element = document.elementFromPoint(playerLeft, playerTop-10); var element = document.elementFromPoint(playerLeft, playerTop-5);
if (element.classList.contains("sky") == false) { /*change to only trigger when not grass*/ if (element.classList.contains("sky") == false) { /*change to only trigger when not grass*/
player.style.top = (playerTop - 10) + "px"; player.style.top = (playerTop - 5) + "px";
} }
player.className = "character walk up"; player.className = "character walk up";
console.log("Up"); console.log("Up");
break; break;
case 40: /*Down*/ case 40: /*Down*/
case 83: /*S*/ case 83: /*S*/
var element = document.elementFromPoint(playerLeft, playerTop+10); var element = document.elementFromPoint(playerLeft, playerTop+5);
if (element.classList.contains("sky") == false) { if (element.classList.contains("sky") == false) {
player.style.top = (playerTop + 10) + "px"; player.style.top = (playerTop + 5) + "px";
} }
player.className = "character walk down"; player.className = "character walk down";
console.log("Down"); console.log("Down");
@ -37,18 +39,18 @@ function horizontalMovement(keyCode) {
switch(keyCode) { switch(keyCode) {
case 37: /*Left*/ case 37: /*Left*/
case 65: /*A*/ case 65: /*A*/
var element = document.elementFromPoint(playerLeft-10, playerTop); var element = document.elementFromPoint(playerLeft-5, playerTop);
if (element.classList.contains("sky") == false) { if (element.classList.contains("sky") == false) {
player.style.left = (playerLeft - 10) + "px"; player.style.left = (playerLeft - 5) + "px";
} }
player.className = "character walk left"; player.className = "character walk left";
console.log("Left"); console.log("Left");
break; break;
case 39: /*Right*/ case 39: /*Right*/
case 68: /*D*/ case 68: /*D*/
var element = document.elementFromPoint(playerLeft+10, playerTop); var element = document.elementFromPoint(playerLeft+5, playerTop);
if (element.classList.contains("sky") == false) { if (element.classList.contains("sky") == false) {
player.style.left = (playerLeft + 10) + "px"; player.style.left = (playerLeft + 5) + "px";
} }
player.className = "character walk right"; player.className = "character walk right";
console.log("Right"); console.log("Right");
@ -56,13 +58,38 @@ function horizontalMovement(keyCode) {
} }
} }
function move(event) { function move() {
verticalMovement(event.keyCode); if (currentKey == 0) {
horizontalMovement(event.keyCode); verticalMovement(lastKey);
horizontalMovement(lastKey);
if (lastKey != 0) {
currentKey = lastKey;
}
}
else {
verticalMovement(currentKey);
horizontalMovement(currentKey);
}
}
function getKey(event) {
lastKey = currentKey;
currentKey = event.keyCode;
} }
function stop(event) { function stop(event) {
switch(event.keyCode) { if (currentKey == lastKey) {
currentKey = 0;
lastKey = 0;
}
else if (event.keyCode == currentKey) {
currentKey = 0;
}
else if (event.keyCode == lastKey) {
lastKey = 0;
}
switch(event.keyCode) {
case 38: /*Up*/ case 38: /*Up*/
case 87: /*W*/ case 87: /*W*/
player.className = "character stand up"; player.className = "character stand up";
@ -81,5 +108,4 @@ function stop(event) {
break; break;
} }
} }

View File

@ -1,8 +1,9 @@
/*Add events to webpage*/ /*Add events to webpage*/
function loadScripts() { function loadScripts() {
document.addEventListener("keydown", move) document.addEventListener("keydown", getKey)
document.addEventListener("keyup", stop) document.addEventListener("keyup", stop)
setInterval(move, 10);
document.getElementById("start").addEventListener("click", startGame) document.getElementById("start").addEventListener("click", startGame)
} }