d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Français > Javascript
1234Next
Add Reply New Topic New Poll
Member
Posts: 9,837
Joined: Feb 20 2011
Gold: 4,815.00
Mar 26 2014 11:32am
Bonjour,

Bon j'suis en train de coder mon putain de double jump mais ça n'a pas l'air de fonctionner comme j'le voudrais.
Du coup, j'me demandais si quelqu'un pouvait me donner un coup de main.

Code
//jump
var jumpCount = 0;
var jumpKey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
jumpKey.onDown.add(jumpCheck);

function jumpCheck() {
if(jumpCount < 1 && player.body.touching.down){
jump1();
jumpCount ++
}
else if(jumpCount = 1){
jump2();
jumpCount++
}
}

function jump1(){
player.body.velocity.y = -250;
}

function jump2(){
player.body.velocity.y = -150;
}


J'comprends pas pourquoi cet enculé de player continue à sauter à l'infini malgré le fait qu'il devrait plus le faire après que jumpCount >1 .
Member
Posts: 32,253
Joined: Feb 24 2006
Gold: 7,119.00
Mar 26 2014 11:35am
tu remets pas a 0 dans dans else if, tu l'incrémentes
Member
Posts: 6,551
Joined: Aug 14 2006
Gold: 17,277.49
Mar 26 2014 11:39am
Je connais rien au Javascript, mais tu es sûr que "if(jumpCount = 1)" ne devrait pas plutôt être "if(jumpCount == 1)" ?

C'est un piège habituel du C : "=" est l'opérateur d'affectation et "==" celui de comparaison

This post was edited by Hubbard on Mar 26 2014 11:42am
Member
Posts: 9,837
Joined: Feb 20 2011
Gold: 4,815.00
Mar 26 2014 11:47am
Quote (Hubbard @ Mar 26 2014 06:39pm)
Je connais rien au Javascript, mais tu es sûr que "if(jumpCount = 1)" ne devrait pas plutôt être "if(jumpCount == 1)" ?

C'est un piège habituel du C, si tu mets juste "=" dans un if ça exécute la ligne (et donc ça fixe jumpCount à 1).


Ah ouais, c'est une bête erreur d'inattention ça mais merci.

Quote (fire92 @ Mar 26 2014 06:35pm)
tu remets pas a 0 dans dans else if, tu l'incrémentes


Si j'le refous à 0,il ne veut plus faire qu'un jump ... Ca n'a guère de sens mais c'est comme ça ...
J'pense que ça vient du player.body.velocity.y Faudrait plutôt que je reprenne la position y maximum du premier saut et que je refasse un posYMax.velocity.y = gnagnagna

This post was edited by TaGueule on Mar 26 2014 11:51am
Member
Posts: 11,427
Joined: Dec 25 2010
Gold: 0.00
Mar 26 2014 12:08pm
Fais un debug :
Code
} else if (jumpCount > 1) {
monDiv.innerHTML = "jumpCount " + jumpCount;
}
monDiv.innerHTML += "Vitesse : " + player.body.velocity.y;
Member
Posts: 32,253
Joined: Feb 24 2006
Gold: 7,119.00
Mar 26 2014 12:59pm
scuze j'ai lu vite magueule, et jconnais rien au js
Member
Posts: 9,837
Joined: Feb 20 2011
Gold: 4,815.00
Mar 26 2014 01:09pm
Quote (You2 @ Mar 26 2014 07:08pm)
Fais un debug :
Code
} else if (jumpCount > 1) {
  monDiv.innerHTML = "jumpCount " + jumpCount;
}
monDiv.innerHTML += "Vitesse : " + player.body.velocity.y;


Nope, il appelle même pas la fonction jump2 ...

Quote (fire92 @ Mar 26 2014 07:59pm)
scuze j'ai lu vite magueule, et jconnais rien au js


Non mais j'comprends pas non plus hein. C'que tu dis devrait être correct ^^

This post was edited by TaGueule on Mar 26 2014 01:09pm
Member
Posts: 1,977
Joined: Aug 6 2007
Gold: 13,918.52
Mar 26 2014 01:28pm
Tes points virgules apres tes incrémentations?

Il te dis quoi le debugger chrome?

This post was edited by S4nGoKu on Mar 26 2014 01:32pm
Member
Posts: 9,837
Joined: Feb 20 2011
Gold: 4,815.00
Mar 26 2014 01:35pm
Quote (S4nGoKu @ Mar 26 2014 08:28pm)
Tes points virgules apres t'es incrémentations?

Il te dis quoi le debugger chrome?


Ouais, j'ai corrigé aussi les points virgules, ça change rien.

J'ai modifié un chouilla et j'ai ça comme code:

Code
//jump
var jumpCount = 0;
var jumpKey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
jumpKey.onDown.add(jumpCheck);

function jumpCheck() {
if(jumpCount < 1 && player.body.touching.down){
jumpCount ++;
jump1();
console.log("jumpCount =" + jumpCount);
console.log("Vitesse ="+ player.body.velocity.y);
// attention, remettre jumpCount à zéro si on touche le sol
if(player.body.touching.down){
jumpCount = 0;
}
}

//double jump
else if(jumpCount == 1){
jump2();
jumpCount = 0;
console.log("jumpCount =" + jumpCount);
console.log("Vitesse ="+ player.body.velocity.y);

}
//debug
else if(jumpCount > 1){
console.log("jumpCount =" + jumpCount);
console.log("Vitesse ="+ player.body.velocity.y);
}
}

function jump1(){
console.log("jump1");
player.body.velocity.y = -250;
}

function jump2(){
console.log("jump2");
player.body.velocity.y = -350;

}


Niveau debugger j'ai ça:

jump1 game.js:115
jumpCount =1 game.js:91
Vitesse =-250 game.js:92

Il n'appelle même pas ma function jump2.
Member
Posts: 32,253
Joined: Feb 24 2006
Gold: 7,119.00
Mar 26 2014 01:58pm
c'est ton else qui baise le truc, comme tes tests se suivent
Go Back To Français Topic List
1234Next
Add Reply New Topic New Poll