1

これが私のコードです。プレーヤーにいくつかの統計を持たせたいのですが、どうすればよいかよくわかりません。

私はコーディングにかなり慣れていないので、プレーヤー (player.life など) に「何か」を追加する必要があると思いますが、うまくいくようです。しかし、私のプレーヤーが 2 番目のキノコ (コードの最後にある CFR 戦闘) をヒットすると、予想される「プレーヤーのライフは 470 です」がコンソールに記録されません。

問題は変数に起因する可能性があると思いlifeHittedます。

var game = new Phaser.Game(800, 600, Phaser.AUTO, '', {
    preload: preload,
    create: create,
    update: update
});
var player;

function preload() {
    game.load.image('square', 'assets/poulpe.png');
    game.load.image('platform', 'assets/platform.png');
    game.load.image('background', 'assets/background.png');
    game.load.image('mushroom', 'assets/mushroom.png');


}

var platforms;

function create() {

    game.add.sprite(0, 0, 'background');
    var text = "Le jeu de Mr Carré.";
    var style = {
        font: "45px Arial",
        fill: "#dddddd",
        align: "center"
    };
    game.add.text(game.world.centerX - 300, 0, text, style);

    //platforms
    platforms = game.add.group();

    ground = platforms.create(0, game.world.height - 90, 'platform');
    ground.scale.setTo(2, 2);
    ground.body.immovable = true;

    //Ledge
    var ledge = platforms.create(145, 350, 'platform');
    ledge.scale.setTo(1, 0.5);
    ledge.body.immovable = true;

    ledge = platforms.create(350, 250, 'platform');
    ledge.scale.setTo(1, 0.5);
    ledge.body.immovable = true;


    //player
    player = game.add.sprite(20, game.world.height - 180, 'square');
    player.scale.setTo(1, 1);
    player.body.bounce.y = 0.2;
    player.body.gravity.y = 6;
    player.body.collideWorldBounds = true;
    player.life = 500;
    currentLife = player.life;

    player.atk = 30;

    //mushroom
    mushroom = game.add.group();
    //mushroom.x= Math.random()*100; 

    mushroom.life = 100;
    mushroom.atk = 15;
    dmg = mushroom.atk;

    mush1 = mushroom.create(200, 250, 'mushroom');
    mush1.body.immovable = true;


    mush2 = mushroom.create(500, 150, 'mushroom');
    mush2.body.immovable = true;

    jumpCount = 0;





}

function update() {

    game.physics.collide(player, platforms);
    game.physics.collide(mushroom, platforms);
    game.physics.overlap(player, mush1, scaleUpPlayer, null, this);
    game.physics.overlap(player, mush2, scaleDownPlayer, null, this);

    function scaleUpPlayer(player, mush) {
        mush.kill();
        player.scale.setTo(2, 2);
        player.x = 210;
        player.y = 200;
    }

    function scaleDownPlayer(player, mush) {
        mush.kill();
        player.scale.setTo(1, 1);
        player.x = 500;
        player.y = 150;
    }


    //jump
    console.log('rrr');
    var jumpKey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
    // A chaque fois que UP est pressé, on lance la fonction jumpCheck()
    jumpKey.onDown.add(jumpCheck);

    function jumpCheck() {
        if ((jumpCount < 1) && (player.body.touching.down)) {
            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
        if ((jumpCount == 1) && (!player.body.touching.down)) {
            jump2();
            console.log("jumpCount =" + jumpCount);
            console.log("Vitesse =" + player.body.velocity.y);

        }

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

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

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

    }

    //movement
    player.body.velocity.x = 0;

    if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT)) {
        player.body.velocity.x = -350;
    } else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) {
        player.body.velocity.x = 350;
    }

    //Combat
    game.physics.overlap(player, mushroom, testDmg, null, this);

    function testDmg(){
        if(game.physics.overlap(player, mushroom)){
            lifeHitted = player.life - dmg;

            if(lifeHitted <= 0){
            console.log("Le player meurt.");
            player.kill();
            //die();
            }

            if(lifeHitted > 0){
                console.log("player life is:" + lifeHitted);

            }  
        }
    }    
}
4

1 に答える 1