В Phaser3 объекты пользовательского интерфейса выходят за пределы сцены из-за камерыJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 В Phaser3 объекты пользовательского интерфейса выходят за пределы сцены из-за камеры

Сообщение Гость »


Я создаю платформер, и моя камера следует за игроком, кнопки или объекты пользовательского интерфейса, которые я размещаю на сцене, выходят за пределы угла камеры, потому что камера следует за игроком, например, когда игрок спускается по сцене. платформа, моя кнопка остается выше.

Я попробовал setScroll, но это не сработало.

А также, пока камера следует за игроком, везде за пределами моей тайловой карты на вашем поле черно-пусто, и как мне это предотвратить, следует ли мне увеличить карту или есть другое решение, например, я хотел попробовать setBounds но мне это не удалось, потому что я не могу добавить setBounds, когда моя камера следует за игроком.
экспортировать класс по умолчанию Level1Scene расширяет сцену { конструктор() { супер({ ключ: Scenes.Level1Scene.key, }); this.hitEnemy = this.hitEnemy.bind(это); this.uiManager = новый UIManager(); } инициализация (реквизит: любой) { const {levelLoaded} = реквизит; уровеньЗагружен(); console.log(LevelManager.instance.currentLevel + "11111111111111111"); this.cursors = this.input.keyboard?.createCursorKeys(); GameManager.instance.setScene(это); } создавать() { это.createPlayer(); this.cameras.main.startFollow(this.player); this.cameras.main.setZoom(1.5); это.createTiles(); это.createLayers(); this.createBananas(); это.createEnemies(); this.createOverlaps(); это.createUI(); GameManager.instance.setScore(10); } обновление (время: число, дельта: число): void { это.плеер.обновление(); this.physical.collide(this.player, this.groundLayer); this.physical.collide(this.player, this.propsLayer); this.physical.collide(this.enemiesA, this.groundLayer); если (!LevelManager.instance.levelLoading) { если (this.cursors?.right.isDown) { LevelManager.instance.advanceLevel(Scenes.Level2Scene.key); } } this.bananas.getChildren().forEach((b) => b.update); } частный createTiles(): void { this.map = this.make.tilemap({ ключ: «уровень2», }); this.map.setCollision([2]); this.propsTileset = this.map.addTilesetImage("реквизит")!; this.groundTileset = this.map.addTilesetImage("земля")!; } частный createLayers() { this.propsLayer = this.map.createLayer("реквизит", this.propsTileset, 0, 0)!; this.groundLayer = this.map.createLayer( "земля", это.groundTileset, 0, 0 )!; this.propsLayer.setCollisionBetween(293, 295); } частный createPlayer() { this.player = Player.create(это); } частный hitBanana(b: любой, c: любой) { (c как банан).collect(); } частный hitEnemy (b: любой, а: любой) {} частный createBananas() { this.bananas = this.физика.add.group({ неподвижный: правда, разрешитьГравити: ложь, }); const Banans = getObjectsByType("банан", this.map, "objects"); бананы.forEach((b) => { это.бананы.добавить( новый банан({ ключ: «банан», сцена: это, текстура: "банан32", х: б.х, й: пока, }) ); }); } частный createEnemies() { //Создаем враговA this.enemiesA = this.физика.add.group({ неподвижный: правда, разрешитьГравити: ложь, }); const врагиA = getObjectsByType("enemyA", this.map, "enemiesA"); врагиA.forEach((a) => { this.enemiesA.add( новый EnemyA({ ключ: «враг», сцена: это, текстура: "врагА", х: токс, у: а.у - 16, }) ); }); //Создаем враговB this.enemiesB = this.физика.add.group({ неподвижный: правда, разрешитьГравити: ложь, }); const врагиB = getObjectsByType("enemiesB", this.map, "enemiesB"); врагиB.forEach((a) => { this.enemiesB.add( новый EnemyB({ ключ: «враг», сцена: это, текстура: "enemyB", х: токс, у: а.у - 16, }) ); (""); }); } частный createOverlaps() { this.enemiesA.getChildren().forEach((a) => { this.physicals.add.collider(this.player, this.enemiesA, this.hitEnemy); }); this.enemiesB.getChildren().forEach((a) => { this.physicals.add.collider(this.player, this.enemiesB, this.hitEnemy); }); this.bananas.getChildren().forEach((b) => { this.физика.add.overlap(this.player, b, this.hitBanana, неопределенное, это); }); } частный createUI(): void { this.uiManager.add( "паузаBtn", () => новый IconBtn(this, 16, 16, "pauseBtn", () => { GameManager.instance.onPauseGame(); }) ); } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»