Один вариант - для каждого вражеского корабля должен быть выделен определенный c регион, в котором он может стартовать. Если у вас есть 2 корабля, это означает, что первый корабль может находиться в любом месте первой половины оси X, а второй корабль может быть где угодно во второй половине оси X.
Для этого вы должен обновить вашу функцию resetShip
, чтобы также принимать minX
и maxX
, и использовать это при определении его местоположения:
resetShip (enemy_spaceship, minX, maxX) {
enemy_spaceship.y = 0;
enemy_spaceship.x = Phaser.Math.Between(minX, maxX);
}
Затем вам нужно найти способ отдохнуть группе Корабли, предоставляя допустимые регионы для каждого корабля. Примерно так:
resetEnemies(ships) {
//Each ship may be in a region that is 1/Nth of the width
let regionWidth = globalThis.config.width / ships.length
//We need to know the shipWidth so we don't let ships get too
//close to the left edge.
let shipWidth = 64
ships.forEach((ship, i) => {
//Assuming you just want padding on the left so it is no closer than 10px,
//this will define the minX for the Nth ship
const minX = Math.min(10, i*regionWidth)
//The maxX should not let a ship overlap the next region. So, we subtract the shipWidth
//to ensure that, at worst, it is right next to the next ship
const maxX = (i+1)*regionWidth-shipWidth
//Use the updated restShip to put it in a valid location for it's region
resetShip(ship, minX, maxX)
})
}