This is the code to create a box, this code is called when you click the down key. I would like help making a box that spawns at the bottom of my screen and moves across the page
var boxes
function preload() {
this.load.image('box', 'assets/box.png');
}
function create() {
this.w = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.W)
this.a = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.A)
this.s = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.S)
this.d = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.D)
box = this.physics.add.group();
boxes = box.create(0, 900, 'box').setScale(0.1);
boxes.body.setAllowGravity(false);
boxes.setVelocityX(200)
this.physics.add.collider(player, boxes);
}
function update() {
let cursors = this.input.keyboard.createCursorKeys();
if (this.s.isDown) {
if (wait = 1) {
createBox()
}
}
}
function createBox() {
box = this.physics.add.group();
boxes = box.create(0, 900, 'box').setScale(0.1);
boxes.body.setAllowGravity(false);
boxes.setVelocityX(200)
this.physics.add.collider(player, boxes);
this.time.delayedCall(1000, delayer, null, this);
}
I also create the box once in the create function and it works
I get the error: TypeError: Cannot read properties of undefined (reading 'add')
the problem is that in your down event function, you didn't passt the scene as context. I'm to sure which method you are using, but here an example what I mean:
If you are using the input.keyboard.on way (here the documentation):
this.input.keyboard.on('keydown-DOWN', function (event) {
// ...
}, this); // <- finall *this* is very important
the final
thisis the scene, that you need to pass to the keyboard event-callback. So that thethisin your functioncreateBoxpoints to thesceneand not to the browserwindow;