Soy nuevo en Phaser 3 y trato de descubrir la diferencia entre los (al menos) 3 métodos para crear rectángulos. Aquí está el código
var game = new Phaser.Game({ scene: { create: create } }); function create() { let rect1 = this.add.rectangle(300, 100, 100, 30, 0x00f000, .5); let rect2 = new Phaser.GameObjects.Rectangle(this, 300, 150, 100, 30, 0xf00000) this.add.existing(rect2); let rect3 = this.add.graphics({ fillStyle: { color: 0x00f0f0 } }); let rect = new Phaser.Geom.Rectangle(300, 200, 100, 30); rect3.fillRectShape(rect); } <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script> rect1 usa el más simple que solo necesita 1 línea de código.
rect2 instancia la clase Phaser.GameObjects.Rectangle . Supongo que es más poderoso si necesito un montón de objetos rectangulares donde puedo crear una subclase de la clase, predefinir algunas propiedades y métodos e instanciar mi objeto rectangular personalizado.
rect3 usa Phaser.GameObjects.Graphics que no puedo imaginar su caso de uso donde supera a los dos anteriores. ¿Alguien podría darme una pista?
La respuesta corta:
new Phaser.Geom.Rectangle(...)this.add.rectangle(...)new Phaser.GameObjects.Rectangle(...)this.add.graphics(...)La respuesta larga:
Depende de la tarea en cuestión. Dado que cada Objeto crea más o menos un Objeto diferente con diferentes propiedades/métodos.
Phaser.GameObjects.Graphics :Aquí un ejemplo de un rectángulo especial : https://phaser.io/examples/v3/view/game-objects/graphics/fill-rounded-rectangle
Phaser.GameObjects.Rectangle :Phaser.GameObjects.Graphics , pero está especializado para crear rectángulos.this.add.rectangle(...) y new Phaser.GameObjects.Rectangle(...) crean un rectángulo de este tipo. this.add.rectangle es solo una forma más conveniente de lograr esto y lo agrega directamente a la escena actual.Aquí un ejemplo de rectángulos básicos : https://phaser.io/examples/v3/view/game-objects/shapes/rectangle
Phaser.Geom.Rectangle :Aquí un ejemplo de cómo se usa para verificar si un GameObject está en un rectángulo específico:https://phaser.io/examples/v3/view/geom/rectangle/contains-rect