мяч не работает должным образом при нажатии на нужную кнопку, Phaser 3 - PullRequest
0 голосов
/ 06 января 2020

Кажется, что-то не так с кодом, одна кнопка должна замедляться, а одна кнопка ускоряться, когда я добавляю этот код,

    this.downButton = this.add.image(80, 530, 'up-bubble').setInteractive();
    this.upButton = this.add.image(230, 530, 'down-bubble').setInteractive();
    this.input.on('gameobjectup', function (pointer, gameobject) {

        if (gameobject === this.downButton && this.spinSpeed > 0)
        {
            this.spinSpeed -= 0.1;
        }
        else if (gameobject === this.upButton && this.spinSpeed < 9.9)
        {
            this.spinSpeed += 0.1;
        }

    });   

, но, когда я добавляю этот код между generateBalls ( ), это не работает вообще, это не работает,

   generateBalls() {

    const hitArea = new Phaser.Geom.Rectangle(0, 0, 32, 32);
    const hitAreaCallback = Phaser.Geom.Rectangle.Contains;        

    const circle = new Phaser.Geom.Circle(400, 300, 220);
    const balls  = this.add.group(null, { 
        key: 'balls', 
        frame: [0, 1, 5], 
        repeat: 5, 
        setScale: { x: 3, y: 3 },
        hitArea: hitArea,
        hitAreaCallback: hitAreaCallback,
    });



    this.downButton = this.add.image(80, 530, 'up-bubble').setInteractive();
    this.upButton = this.add.image(230, 530, 'down-bubble').setInteractive();
    this.input.on('gameobjectup', function (pointer, gameobject) {

        if (gameobject === this.downButton && this.spinSpeed > 0)
        {
            this.spinSpeed -= 0.1;
        }
        else if (gameobject === this.upButton && this.spinSpeed < 9.9)
        {
            this.spinSpeed += 0.1;
        }

    });       



    Phaser.Actions.PlaceOnCircle( balls.getChildren(), circle);

    return balls;
}
 generateDance() {
        this.spinSpeed = 0.003;  
        return this.tweens.addCounter({
            from: 220,
            to: 160,
            duration: 9000,
            delay: 2000,
            ease: 'Sine.easeInOut',
            repeat: -1,
            yoyo: true
        });
    }
update() {

    this.playerEyes.update();
    Phaser.Actions.RotateAroundDistance( this.balls.getChildren(), { x: 400, y: 300 }, this.spinSpeed, this.dance.getValue());


}

Я взял код из примера Phaser 3, это https://phaser.io/examples/v3/view/tweens/tween-time-scale

1 Ответ

0 голосов
/ 08 января 2020

теперь обе кнопки работают нормально

 generateDance() {

    this.downButton = this.add.image(230, 530, 'up-bubble').setInteractive();
    this.upButton = this.add.image( 80, 530, 'down-bubble').setInteractive();

    this.spinSpeed = 0.003;

    this.downButton.on ('pointerdown', (event) => {

        if (this.spinSpeed < 1) { this.spinSpeed += 0.002; }
    });

    this.upButton.on('pointerdown', (event) => {

        if (this.spinSpeed > 0 ) { this.spinSpeed -= 0.001; }
    }); 

    return this.tweens.addCounter({
        from: 220,
        to: 160,
        duration: 9000,
        delay: 2000,
        ease: 'Sine.easeInOut',
        repeat: -1,
        yoyo: true
    });
}
...