Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - bygdle

526
Preguntas y respuestas / Re:Duda con instance_change
Abril 25, 2016, 12:54:44 AM
El argumento se llama "Perform events".

Este argumento, según el manual, indica si al realizar el cambio de instancia se debe ejecutar el evento <destroy> de la instancia antigua y el <create> de la instancia nueva (si el argumento es true).
527
Puedes intentar usar un collision_line() para detectar si hay alguna colisión con una instancia de obj_Enemigo al frente.
Por ejemplo, en el obj_Planta, evento <create>:
[gml]
disparo = 0;
[/gml]
Y en <step>:
[gml]
var colision;
colision = collision_line(x, y, room_width, y, obj_Enemigo, false, true);
if (colision != noone) { //Si hay un enemigo en frente suyo
    if (disparo < 30) {
        disparo ++;
    }
    else { //Y si puede disparar
        var bala;
        disparo = 0;
        bala = instance_create(x, y, obj_Planta); //Disparar
        bala.hspeed = 12; //con una velocidad de 12
    }
}
[/gml]
528
Entonces podrías hacer un ciclo que inserte un espacio cada 20 caracteres. Por ejemplo:
[gml]
texto = "hola, soy una cadena de texto que tiene más de veeeeinteee caracteres xD xD xD";
var i;
for(i = 20; i <=string_length(texto); i += 20)
    texto = string_insert(chr(13), texto, i);
[/gml]
529
Puedes intentar usar la función draw_text_ext().
530
La opción más fácil es usar la función get_string(), que abre una ventana emergente para escribir en ella.
531
Preguntas y respuestas / Re:VERIFICAR ESPACIO LIBRE
Abril 23, 2016, 08:12:27 PM
Sí, para las otras sería lo mismo pero diferente(?) xD
Pero como te digo, no sé si funcione  :-[
532
Preguntas y respuestas / Re:VERIFICAR ESPACIO LIBRE
Abril 23, 2016, 08:05:17 PM
Hmmm... podrías hacer un ciclo que verificara cada pixel desde la posición del objPlayer y el objBlock, y mientras esté libre ese pixel, sumarle 1 a la variable que te dirá la distancia libre.
Eso, claro, sólo funcionaría si tienes almacenadas las id's de los dos objetos a comprobar su distancia libre.
Por ejemplo:
[gml]
//obj es la instancia del muro
var distancia = 0;
for(var i = x; i < obj.x; i++) {
    if place_free(x + i, y)
        distancia++;
}
[/gml]
Al final del ciclo, la variable distancia tendrá la cantidad de pixeles libres entre el player y el muro. O eso debería pasar, no sé si funciona porque no lo he probado.
533
Podrías hacerlo de la misma forma en la que lo estabas intentando hacer, sólo que cambie de dirección únicamente si la colisión es lateral.
Por ejemplo, digamos que la "dirección" se maneja con hspeed, obviamente positivo para la derecha y negativo para la izquierda.

Entonces, en el step de la plataforma móvil:
[gml]
var choca, aa = 0;
//Suponiendo que el tamaño de la plataforma es 32*32
switch (sign(hspeed)) {
    case 1:  aa = 32;
    case -1: aa = 0;
}
choca = collision_rectangle(x + aa, y, x + aa + sign(hspeed)*4 /*Siendo que la velocidad del player es de 4*/, y+32, player, false, true); //Sólo un ejemplo

if choca != noone
    hspeed = -hspeed;
[/gml]
No lo he probado, pero quizás funcione.
534
Preguntas y respuestas / Re:SISTEMA DE BOTON
Abril 23, 2016, 07:40:03 PM
Porque place_meeting() devuelve un booleano (true o false dependiendo de si hay o no colisión), y collision_rectangle() devuelve la id de la instancia que colisiona. Por ello es posible sacar el valor de num de la instancia identificada con la id que la función devuelve.
535
Preguntas y respuestas / Re:SISTEMA DE BOTON
Abril 23, 2016, 07:29:25 PM
No creo.
Más importante. ¿Estás seguro de que no ocurre nada? Intenta hacer pruebas, reemplaza est = act por otra cosa como un show_message("¡Colisión!") o algo así
536
No pones códigos, pero al menos pon los DnD que usas ¿No?
537
Cita de: VisualGames en Abril 23, 2016, 06:00:34 PM
:v Entonces cuál sería el objetivo de poner que el problema es que celular se te pone lento? XD Pos nada... Yo de ahí no puedo descubrir más :v
Él nunca preguntó el porqué de su problema, y tampoco cómo solucionarlo. Su verdadera pregunta siempre fue:
Cita de: eams1986 en Abril 22, 2016, 06:30:13 PM
instance_deactivate_all(true);
instance_activate_region(view_xview[0] - 64, view_yview - 64, view_wview[0] + 128, view_hview[0] + 128, false);
al parecer funciona pero luego ya no me aparecen las instancias.
Y por ello, el objetivo no era más que preguntar por qué el código que usaba no reactiva las instancias. Eso fue todo, nunca pidió una explicación de por qué se ralentizaba su teléfono.
538
Preguntas y respuestas / Re:SISTEMA DE BOTON
Abril 23, 2016, 06:54:13 PM
Según lo que dices, el objeto player no tiene una variable num, sino que ésta se encuentra en el objeto Bol con el que se colisiona.
Por eso es que no sucede nada, porque debes obtener el valor de num del objeto con el que colisionó para comprobar correctamente.
[gml]
var obj = collision_rectangle(x, y, x + 32, y + 32, oBol, false, true);

if obj != noone {
    with (oBlock) {
        if num == obj.num;
            est = act;
    }
}
[/gml]
Hice uso de un collision_rectangle() en el ejemplo. Revisa esta función en el manual para que entiendas mejor.
539
Preguntas y respuestas / Re:SISTEMA DE BOTON
Abril 23, 2016, 04:22:37 AM
Puedes hacer algo como esto:
[gml]
//Al presionar el objeto (evento <mouse> o alguna condición)
with (oBlock) { //Revisar todas las instancias de oBlock
    if (num == other.num) //Si el 'num' de oBlock es igual al del oBol
        solid = true; //Marcar como sólido
}
[/gml]
540
En el segundo argumento de instance_activate_region() estás usando view_yview como una variable convencional, y no como debería ser: Un array. Puede que eso cause el error.

Además, creo que sería más fácil usar la función instance_deactivate_region() con el argumento 'inside' como false.