TransWikia.com

alguna forma de mejorar el menu? JS - PHASER3

Stack Overflow en español Asked on December 28, 2021

Estoy haciendo un pequeno juego en JS, y ahora estoy implementando el menu principal, el problema es que cada opcion no tiene la misma longitud de caracteres y el selector va cambiando su posicion a medida que se va pasando entre las opciones, el codigo es este:

aqui creo dos arreglos, para el selector, en posicion X y en posicion Y y un tercer arreglo para las tres opciones

create() {
        this.position_X = [350,340,325]; //distance in X for each option
        this.position_Y = [240,270,300]; //distance in Y for each option
        this.i = 0;
        this.selector = this.add.text(this.position_X[this.i],this.position_Y[this.i], "->");
        this.options = [
                this.add.text(globalThis.config.width/2,globalThis.config.height/2,"PLAY").setOrigin(0.6),
                this.add.text(globalThis.config.width/2,globalThis.config.height/2 + 30,"Loading").setOrigin(0.5),
                this.add.text(globalThis.config.width/2,globalThis.config.height/2 + 60,"jdkjdfjkdf").setOrigin(0.5),
            ];

aqui las funciones que van cambiando a medida que se va eligiendo:

goUp() {
        if (event.keyCode === Phaser.Input.Keyboard.KeyCodes.W) {
            this.i -= 1;
            if (this.i < 0) {
                this.i = 2;
                this.selector.x = this.position_X[this.i];
                this.selector.y = this.position_Y[this.i];
            }else {
                this.selector.x = this.position_X[this.i];
                this.selector.y = this.position_Y[this.i];
            }
        }
    }
    goDown() {
        if (event.keyCode === Phaser.Input.Keyboard.KeyCodes.S) {
            this.i += 1;
            if (this.i > 2) {
                this.i = 0;
                this.selector.x = this.position_X[this.i];
                this.selector.y = this.position_Y[this.i];
            }else {
                this.selector.x = this.position_X[this.i];
                this.selector.y = this.position_Y[this.i];
            }
        }
    }

como podran ver lo que cambia es solamente la posicion del selector, ya que cada opcion la longitud no es la misma, por lo que tengo que definirlas manualmente para que quede bien, dando resultado esto:

opcion 1:

introducir la descripción de la imagen aquí

bajando a opcion 2:

introducir la descripción de la imagen aquí

hay alguna forma que la posicion del selector se cambie, vamos a decirlo dinamicamente? calculando algo, sin que yo tenga que modificar sus valores en los arreglos

One Answer

Nunca he programado nada por el estilo con coordenadas.

Te digo lo que yo habría hecho:

Creo las tres opciones con selector:

-> Play
 -> Loading
 -> Lo que sea

Todos los selectores serían invisibles, salvo el de la opción seleccionada y la opción por defecto, e iría cambiando con las teclas.

De esta forma te deberías olvidar de temas de coordenadas, modificar arrays de posiciones y temas del estilo.

Answered by Leonardo Cavani on December 28, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP