Обнаружение при столкновении в холсте фазера без физики - PullRequest
0 голосов
/ 22 мая 2019

Я должен сделать мини-видеоигру для практики.Я кодировал в Phaser, JavaScript и Java.Холст рисуется в Фазере.

Мне нужно поместить столкновения на границах мира или что-то, когда мой космический корабль коснется границы холста, чтобы мой космический корабль не вышел на экран.

Моему учителю запрещено делать что-то с физикой, например аркаду, ниндзя или P2.

Не имеет значения, если решение в JavaScript или Phaser.Только мне нужно ограничить границы холста.

У меня есть это для рисования мира в Phaser:

game = new Phaser.Game(1024, 600, Phaser.AUTO, 'gameDiv'

У меня есть спрайт в мире в preload:

game.global.myPlayer.image = game.add.sprite(0, 0, 'spacewar', game.global.myPlayer.shipType);

В функции создания у меня есть управление с клавиатуры:

this.wKey = game.input.keyboard.addKey(Phaser.Keyboard.UP);
this.sKey = game.input.keyboard.addKey(Phaser.Keyboard.DOWN);
this.aKey = game.input.keyboard.addKey(Phaser.Keyboard.LEFT);
this.dKey = game.input.keyboard.addKey(Phaser.Keyboard.RIGHT);
this.spaceKey = game.input.keyboard.addKey(Phaser.Keyboard.CONTROL);
this.shiftKey = game.input.keyboard.addKey(Phaser.Keyboard.SHIFT);

В функции обновления движение:

if (this.wKey.isDown)
    msg.movement.thrust = true;
if (this.sKey.isDown)
    msg.movement.brake = true;
if (this.aKey.isDown)
    msg.movement.rotLeft = true;
if (this.dKey.isDown)
    msg.movement.rotRight = true;
if (this.spaceKey.isDown) {
    msg.bullet = this.fireBullet()
}
if (this.shiftKey.isDown) {
    msg.push = true;
}

1 Ответ

1 голос
/ 22 мая 2019

Не уверен, как запрос решения школьного проекта поможет вам чему-нибудь научиться ..

Но в любом случае, функция update() вызывается для каждого кадра (60 раз в секунду), поэтому внутри этой функции вы можете сделать что-то подобное, чтобы предотвратить перемещение игрока за пределы игровой зоны:

// cannot move outside game area, left and right
if (game.global.myPlayer.image.x < 0) {
    game.global.myPlayer.image.x = 0;
}
if (game.global.myPlayer.image.x > game.world.width) {
    game.global.myPlayer.image.x = game.world.width;
}

// cannot move outside game area, top and bottom
if (game.global.myPlayer.image.y < 0) {
    game.global.myPlayer.image.y = 0;
}
if (game.global.myPlayer.image.y > game.world.height) {
    game.global.myPlayer.image.y = game.world.height;
}
...