Buenas a todos!
tengo un pequeño problema que no soy capas de resolver, os cuento:
quiero que el jugador apriete varias teclas al mismo tiempo para hacer una acción, que esta acción solo se cumpla si las 2 teclas se pulsaron a la vez por ejemplo
TECLA A + TECLA B = salto
TECLA A +TECLA B +TECLA C = sprintar
si alguien sabe como hacerlo o darme una idea seria genial!
de antemano gracias! :)
Hola cristopher2545! Le podés aplicar álgebra booleana.
Lo que querés hacer es lo que haría la puerta lógica "AND". En álgebra booleana esto se expresa de esta forma:
Con dos valores:
A * B = B * A
O con tres valores
(A * B) *C = A * (B * C) = A * B * C
Aplicándolo a lo que querés hacer vos quedaría así:
[gml]//Las teclas las definís vos según tu necesidad
var tecla_a = keyboard_check(tecla);
var tecla_b = keyboard_check(tecla);
var tecla_c = keyboard_check(tecla);
//Primer caso (TECLA A + TECLA B = salto)
if (tecla_a * tecla_b){
//Ejecutar un script de salto
salto();
}
//Segundo caso (TECLA A + TECLA B + TECLA C = sprintar)
if (tecla_a * tecla_b * tecla_c){
//Ejecutar un script de sprint
sprint();
}
[/gml]
Lo que sucede es que, al presionar las teclas, las variables se actualizan a 1. Y al soltar, a 0.
Suponé que estás presionando las teclas "a" y "b":
[gml]if (tecla_a * tecla_b *tecla_c) {...}
//Es igual que:
if (1 * 1 * 0) {...} //1 * 1 * 0 = 0, que es false
[/gml]
Se tiene que presionar las 3 teclas al mismo tiempo para que ese evento se ejecute.
Te recomiendo que leas información sobre álgebra booleana. Este tema aplicado a la programación es muy útil.
Cita de: Hezz en Marzo 01, 2019, 06:58:01 AM
Hola cristopher2545! Le podés aplicar álgebra booleana.
Lo que querés hacer es lo que haría la puerta lógica "AND". En álgebra booleana esto se expresa de esta forma:
Con dos valores:
A * B = B * A
O con tres valores
(A * B) *C = A * (B * C) = A * B * C
Aplicándolo a lo que querés hacer vos quedaría así:
[gml]//Las teclas las definís vos según tu necesidad
var tecla_a = keyboard_check(tecla);
var tecla_b = keyboard_check(tecla);
var tecla_c = keyboard_check(tecla);
//Primer caso (TECLA A + TECLA B = salto)
if (tecla_a * tecla_b){
//Ejecutar un script de salto
salto();
}
//Segundo caso (TECLA A + TECLA B + TECLA C = sprintar)
if (tecla_a * tecla_b * tecla_c){
//Ejecutar un script de sprint
sprint();
}
[/gml]
Lo que sucede es que, al presionar las teclas, las variables se actualizan a 1. Y al soltar, a 0.
Suponé que estás presionando las teclas "a" y "b":
[gml]if (tecla_a * tecla_b *tecla_c) {...}
//Es igual que:
if (1 * 1 * 0) {...} //1 * 1 * 0 = 0, que es false
[/gml]
Se tiene que presionar las 3 teclas al mismo tiempo para que ese evento se ejecute.
Te recomiendo que leas información sobre álgebra booleana. Este tema aplicado a la programación es muy útil.
venga ya de haber sabido colega <3 creo debo darle una desempolvada al libro de matemáticas para no estar batallando
te agradezco la respuesta <3