#javascript #camera #zooming #game-development #phaser-framework
Вопрос:
Я создаю игру с мечом, в которой вам нужно собирать монеты, чтобы стать большим, и вы сражаетесь с людьми. Вот что у меня есть на данный момент:
Обратите внимание, как игрок становится больше по мере сбора монет. Через некоторое время вы становитесь настолько большими, что занимаете весь экран.
Я понял, что мне нужно уменьшить масштаб камеры в зависимости от размера игроков.
Это то, что у меня есть для камеры (в функции создания)
this.cameras.main.startFollow(this.mePlayer);
Я добавил эту строку кода перед этим: this.cameras.main.setZoom(0.5)
Теперь это выглядит так. Текст все меньше, и по какой-то причине мой фон TileSprite тоже ломается.
Вот код для текста.
//killcounter
this.killCount = this.add.text(window.innerWidth / 1.5, 0, 'Kills: 0', {
fontFamily: 'Georgia, "Goudy Bookletter 1911", Times, serif'
}).setFontSize(40).setDepth(101);
this.killCount.scrollFactorX = 0
this.killCount.scrollFactorY = 0
//player fpscounter
this.playerCount = this.add.text(this.cameras.main.worldView.x*this.cameras.main.zoom, this.cameras.main.worldView.y*this.cameras.main.zoom, 'Players: 0' "nFPS: 0", {
fontFamily: 'Georgia, "Goudy Bookletter 1911", Times, serif'
}).setFontSize(20).setDepth(101);
this.playerCount.scrollFactorX = 0
this.playerCount.scrollFactorY = 0
это код для моей камеры
this.cameras.main.startFollow(this.mePlayer);
… и это код для моего фона
//in create function
this.background = this.add.tileSprite(0, 0, window.innerWidth, window.innerHeight, 'background').setOrigin(0).setScrollFactor(0, 0);
this.background.fixedToCamera = true;
//in update function
this.background.setTilePosition(this.cameras.main.scrollX, this.cameras.main.scrollY);
Есть ли способ сохранить текст заблокированным, чтобы при уменьшении масштаба камеры он оставался в том же положении?
Ответ №1:
Спасибо samme за помощь в решении этой проблемы.
В конце я создал еще одну камеру под названием UICamera.
Я использовал ignore
функцию, чтобы игнорировать все игровые объекты на этой камере.
И я проигнорировал весь текст, миникарту, пользовательский интерфейс и фон tilesprite на основной камере.
Затем, чтобы уменьшить масштаб, я бы просто уменьшил масштаб основной камеры и отрегулировал масштаб TileSprite вручную.