Me gustaría poder cambiar la altura de mi sprite para que encaje en un menú, sin embargo, cuando cambio la altura con sprite.displayHeight = menu.height , su ancho no se escalará y se estirará/aplastará.
¿Hay alguna manera de escalar el ancho en relación con la altura, para mantener la proporción original del sprite?
No conozco ninguna función especial que haga esto de inmediato, PERO puede lograrlo con solo una línea adicional de código. No se necesita ningún cálculo adicional.
(esto también funciona con displayHeight )
img.displayWidth = 100;displayWidth ): img.scaleY = img.scaleX;Aquí la documentación , que señala esto:
"... El ancho mostrado de este Game Object.
Este valor tiene en cuenta el factor de escala.
Establecer este valor ajustará la propiedad de escala de Game Object..."
Aquí una demostración de trabajo:
// Minor formating for stackoverflow document.body.style = "display: flex;flex-direction: column;"; function preload () { this.load.image('img', 'https://labs.phaser.io/assets/pics/contra3.png'); } function create () { let imgOrig = this.add.image(100,100, 'img'); let img = this.add.image(320, 100, 'img'); img.displayWidth = 100; // extra line to scale the image proportional img.scaleY = img.scaleX; } var config = { type: Phaser.AUTO, width: 536, height: 160, scene: { preload: preload, create: create } }; var game = new Phaser.Game(config); <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>