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:
bajando a opcion 2:
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
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP