【发布时间】:2020-10-03 06:55:41
【问题描述】:
我正在尝试在 Phaser 3 中制作一个简单的游戏。我有一个玩家类,我在我的 gameScene 的 create 函数中调用它。
播放器类:
class Player extends Phaser.Physics.Arcade.Sprite {
constructor(scene, x, y, key, frame) {
super(scene, x, y, key, frame);
//the scene this game object will be added to
this.scene = scene;
//movement speed
this.velocity = 500;
//enable physics
this.scene.physics.world.enable(this);
//collisions with objects and player fix
this.setImmovable(false);
//bigger player
this.setScale(2.5);
//fix screen borders
this.setCollideWorldBounds(true);
//add player
this.scene.add.existing(this);
this.scene.cameras.main.startFollow(this);
this.setVisible(true);
// this.anims.create({
// key: 'walk-left',
// repeat: 0,
// frameRate: 10,
// frames: this.anims.generateFrameNames('playersoldier', {start: 3, end: 5})
// });
}
update(cursors) {
//controls
if (cursors.left.isDown) {
this.body.setVelocityX(-this.velocity);
// this.walkLeft();
} else if (cursors.right.isDown){
this.body.setVelocityX(this.velocity);
}
if (cursors.up.isDown) {
this.body.setVelocityY(-this.velocity);
} else if (cursors.down.isDown){
this.body.setVelocityY(this.velocity);
}
}
// walkLeft(){
// this.playersoldier = this.add.sprite(100, 100, 'playersoldier', 3);
// this.playersoldier.setScale(5);
// this.anims.create({
// key: 'walk-left',
// repeat: 0,
// frameRate: 10,
// frames: this.anims.generateFrameNames('playersoldier', {start: 3, end: 5})
// });
// this.playersoldier.play('walk-left', true);
// }
}
这些我在 Gamescene 文件中的 mz create 函数中调用。
createPlayer(){
this.player = new Player(this, 500, 100, 'playersoldier');
}
createInput(){
this.cursors = this.input.keyboard.createCursorKeys();
}
我只是不能让它移动:(有一些注释代码,它不起作用。并抛出错误说,我不能调用 .sprite 等。当我单独尝试动画时。没有播放器和控件,它工作正常. 我只是不知道如何将它实现到播放器对象。 有什么建议么? 如果有任何有用的建议,我会很高兴。
非常感谢您的宝贵时间。
【问题讨论】:
标签: javascript phaser-framework