2017-06-12 2 views
0

J'ai quelques problèmes avec mon code. Je n'arrive pas à faire sauter mon cube. Jetez un oeil à mon code et laissez-moi savoir si vous pouvez aider s'il vous plaît. Mes capacités de gauche, de droite et de canard fonctionnent toutes au niveau désiré, mais je n'arrive pas à faire sauter mon cube. J'essaye depuis trois jours et je ne trouve rien en ligne. Mon javascript est intégré dans une balise dans une page html.javascript caractère sautant ne fonctionne pas

var canvas = document.getElementById("gameCanvas"); 
 

 
var ctx = canvas.getContext("2d"); 
 

 
var coinRad = 8; 
 
var coinX = 40; 
 
var coinY = 80; 
 

 
var x = 20; 
 
var y = 510; 
 
var w = 30; 
 
var h = 50; 
 

 
var rightPressed = false; 
 
var leftPressed = false; 
 

 
var ducked = false; 
 
var jumping = false; 
 

 
document.addEventListener("keydown", keyDownHandler, false); 
 
document.addEventListener("keyup", keyUpHandler, false); 
 

 
function keyDownHandler(e) { 
 
    if (e.keyCode == 39) { 
 
    rightPressed = true; 
 
    } else if (e.keyCode == 37) { 
 
    leftPressed = true; 
 
    } else if (e.keyCode == 40) { 
 
    ducked = true; 
 
    } else if (e.keycode == 32) { 
 
    jumping = true; 
 
    } 
 
} 
 

 

 
function keyUpHandler(e) { 
 
    if (e.keyCode == 39) { 
 
    rightPressed = false; 
 
    } else if (e.keyCode == 37) { 
 
    leftPressed = false; 
 
    } else if (e.keyCode == 40) { 
 
    ducked = false; 
 
    } else if (e.keycode == 32) { 
 
    jumping = false; 
 
    } 
 
} 
 

 
function drawCube() { 
 
    ctx.beginPath(); 
 
    ctx.rect(x, y, w, h); 
 
    ctx.fillStyle = "Green"; 
 
    ctx.fill(); 
 
    ctx.closePath(); 
 
} 
 

 
function run() { 
 
    ctx.clearRect(0, 0, canvas.width, canvas.height); 
 
    if (leftPressed) { 
 
    if (x > 0) { 
 
     x -= 2.5; 
 
    } 
 
    } else if (rightPressed) { 
 
    if (x < canvas.width - w) { 
 
     x += 2.5; 
 
    } 
 
    } 
 
    if (jumping) { 
 
    y -= 10; 
 
    h -= 10; 
 
    } 
 
    if (ducked) { 
 
    y = 535; 
 
    h = 25; 
 
    } else { 
 
    y = 510; 
 
    h = 50; 
 
    } 
 
    drawCube(); 
 
} 
 

 
setInterval(run, 10);
<canvas id="gameCanvas"></canvas>

+2

Veuillez ajouter la partie HTML/CSS de votre code pour faciliter la compréhension du problème. –

+2

Cliquez sur '<>' pour créer un [mcve] – mplungjan

Répondre

0

parce que quand la fin de la méthode d'exécution, vous le faites.

if (jumping) { 
    y -= 10; 
    h -= 10; 
} 
if (ducked) { 
    y = 535; 
    h = 25; 
} else { 
    y = 510; 
    h = 50; 
} 

même si vous modifiez les valeurs de Y et H, leurs valeurs changent toujours à 510 et 50 respectivement, parce que le autre dans un état esquivé.

Supprimer cette autre ou de trouver une autre logique à faire de même

+0

Merci, cela a résolu quelques bugs. Mais je n'arrive pas à faire tourner la tête en laissant le personnage se baisser quand je suis pressé, mais je reviens à son état normal quand il est relâché, et c'est la même chose pour sauter. Quelqu'un aurait-il des liens vers de bons codes de plateforme? –

1

De plus, votre chèque de codeTouche est mal capitalisé pour la condition de saut.

else if (e.keyCode == 40) { 
    ducked = false; 
} else if (e.keycode == 32) { //should be keyCode 
    jumping = false; 
}