你如何在Phaser游戏中旋转“玩家”?

时间:2015-08-18 11:10:44

标签: javascript html5 rotation phaser-framework

我正在开发一个竞技场风格的僵尸游戏。我处于非常早期阶段,我找不到按照我想要的方式旋转播放器的方法。

我希望能够使用左箭头和右箭头旋转播放器,然后使用向上箭头向前移动。

这是我目前的球员运动状况:

 if(this.cursor.left.isDown){
        this.player.angle += -0.5;
    }
    else if(this.cursor.right.isDown){
        this.player.angle += 0.5;
    }
    else if(this.cursor.up.isDown){
        this.player.body.velocity.y = -75;
    }
    else{
        this.player.body.velocity.x = 0;
        this.player.body.velocity.y = 0;
    }

这种方法的问题在于,虽然我可以用.angle来改变玩家的旋转,但是当我向前移动时,它仍然只是让我'向上'移动屏幕而不是'向前'与我的旋转相比

很抱歉,如果我解释得不好。

1 个答案:

答案 0 :(得分:2)

我无法正确理解你的问题,但我认为这段代码可能对你有所帮助。你可以使用左右键来旋转汽车精灵和向上键来移动前言。

    function preload(){
    game.load.image('car', 'assets/sprites/car90.png');
}

var car ;

function create(){
    game.physics.startSystem(Phaser.Physics.ARCADE);
        car = game.add.sprite(game.world.centerX,game.world.centerY,'car');
        car.anchor.setTo(0.5,0.5);
        game.physics.arcade.enable(game.global.car);
        car.body.allowRotation = true;
}

function update(){

            if(game.input.keyboard.isDown(Phaser.Keyboard.LEFT)){
                game.global.car.body.angularVelocity = -200;
            }
            else if(game.input.keyboard.isDown(Phaser.Keyboard.RIGHT)){
                game.global.car.body.angularVelocity = 200;
            }
            else if(game.input.keyboard.isDown(Phaser.Keyboard.UP)){
               game.global.car.body.velocity.copyFrom(game.physics.arcade.velocityFromAngle(game.global.car.angle, 200));
            }
            else{
                game.global.car.body.angularVelocity = 0;
                game.global.car.body.velocity.x = 0;
                game.global.car.body.velocity.y = 0;
            }
}