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 - ChinglesVara

1
Preguntas y respuestas / Re:Como pausar el juego?
Marzo 14, 2015, 11:04:16 PM
Cita de: ocarina en Marzo 14, 2015, 07:42:23 PM
aqui te hice un ejemplo muy rapido espero te sirva!!! para mover al personaje usa las teclas de direccion!!! XD XD :-[
saludos

Exactamente el mismo sistema utilizo yo. pero si no te ofende me gustaria agregarle algo que puede serle util al compañero. luego del else que verifica si la pausa es true donde ocrania pone

image_speed=0;
sprite_index=spr_player_quieto;


agregale speed=0
y si usas gravedad clausurale la gravedad

No quiere decir que sea realmente nesesario para todos los objetos, pero si  te va a hacer falta para algunos; por ejemplo si usas disparos a distancia
o cosas así
2
Cita de: 3dgeminis en Marzo 03, 2015, 03:03:49 AM
Yo tengo otro.

CREATE
altura=8
velocidad=4

TECLA DERECHA
if !place_free(x,y+1) {j=-altura} else {j=0}  ///si esta en el suelo no siga bajando

for (i=j;i<altura;i+=1)  ///bucle que ve comprueba la pendiente maxima arriba y abajo
    {
    if place_free(x+velocidad,y-i)  ///comprueba si el lugar esta libre
        {
        x+=velocidad  ///y se mueve hacia ahi
        y-=i
        break  ///termina el bucle
        }
    }

¿y con esto se te limita la altura de la rampa, o puedes subir todo lo que quieras?
3
Cita de: Yoo en Marzo 03, 2015, 02:23:39 AM
Estaba a punto de agregar q uso tambien friction, peroo, ya respondiste  :D
Como seria con friction, reemplazaria el if keyboard_check(...) por el if hspeed>0 (porq uso hspeed)???

MOD: Hay un problemita, ahora con el bloque normal(osea, con el q no es slope) no tienes una buena colision, a veces se keda parado, antes de tocar la pared cuadrada.  :-X

Mira, para la velocidad yo uso la variable Vel, solo tendrias que cambiar eso, y la colicion que puse sirve para todos los bloques, seguramente no estes usando una misma mascara para todas las animaciones, te sugiero que hagas un sprite que sea un poco mas chico que el sprite inicial del personaje
por ejemplo si el personaje es de 16x16, que la mascara se de 14x14, luego en el objeto en donde dice Mask < same as sprite > justo abajo de Parent, le asignes el sprite de mascara, esto lo que hace es que la mascara siempre sea la misma,
4
Te lo explico en criollo pa que te sea mas simple, (No te preocupes que a mi me paso lo mismo que a ti)

escribi eso en un objeto y colocalo en la room para fijarte que suscede

for(i=0;i<10;i++){
draw_text(0,0+(32*i),"Texto" +string (i))
}

te lo tradusco


i es igual a 0;mientras i sea menor a 10; el valor de i se incrementara de 1 en 1 hasta llegar a 10

y lo que esta entre { }
dice que se dibuje el texto + el valor de i en el momento de dibujar ese reglon, en la pociosion x0 y luego en la pocicion y + 32 pixeles*el valor actual de i

entonces primer ciclo
i=0 el texto se dibuja en la pocision 0
i=1 el texto se dibuja en la pocicion y32
i=2 el texto sedibuja en la pocicion y 64 (osea i+ (32*2) )

en conclucion hace que una accion se repita 10 veces (en este caso)

i=0 valor actual
i<10 veces que se repetira la accion
i++ se le suma 1 cada vez, mientras se repite la accion


Ahora porque es importante el ciclo for, pues porque te sirve tanto como para ahorrar lineas de codigo,  para tener el codigo mas organizado, por lo que resulta mas facil de modificar, y leer en busca de errores por ejemplo.

el for te simplifica mucho las cosas

5
Hola, amigo. aveces es nesesario usar mucho codigo para que las cosas funcionen bien
pero para esto en concreto no hace falta mucho codigo,
con esto te deberia bastar



/*
argument 0 : direccion (1 derecha); (-1 izquierda)
*/


//BajarRampas
if place_free(x+Vel*argument0,y+1) && vspeed=0{

for(i=0;i<=32;i++){
    if ! place_free(x+Vel*argument0,y+i){
        x+=(Vel)*argument0;
        y+=(i-1)                       
        image_xscale=argument0;
       
            if !place_free(x,y+1){
                sprite_index=spr_Caminando
                image_speed=0.2
            }
       
            exit;
        }
    }
}



//Subir Rampas
for(i=0;i<=32;i++){
    if place_free(x+Vel*argument0,y-i){
        x+=(Vel)*argument0;
        y-=(i)                       
        image_xscale=argument0;
       
        if !place_free(x,y+1){
            sprite_index=spr_Caminando
            image_speed=0.2
        }
       
        exit;
    }
}



Evento Step del Personaje

//Derecha
if keyboard_check(global.Derecha) && ! keyboard_check(global.Izquierda)   {
Scr_Movimiento(1)   
}


//Deteniendo Animacion
if keyboard_check_released(global.Derecha){
    image_speed=0;
    image_index=1
}   


//Izquierda
if keyboard_check(global.Izquierda)&& ! keyboard_check(global.Derecha) {
Scr_Movimiento(-1)
}

//Deteniendo Animacion
if keyboard_check_released(global.Izquierda){
    image_speed=0;
    image_index=1
    }


//Salto
if keyboard_check_pressed(global.Salto) && !place_free(x,y+1){
  vspeed=-12;sprite_index=spr_Salto
   }



para que te funcione bien, tenes que cambiar las teclas o declarar las variables globales

global.derecha=tecla para la derecha
global.izquierda=tecla para la izquierda
global.Salto= tecla de salto


y porupuesto agregarle la gravedad y los eventos de colicion con el suelo,y las rampas


move_contact_solid(direction,12);vspeed=0;gravity=0;

if  sprite_index=spr_Cayendo{sprite_index=spr_Caminando}
6
Esa vercion que venden a 25 euros no es la vercion profecional, es la vercion standar, que hace ya unos cuantos mese que es gratis en la pagina de yoyogames. Igual se agradece mucho la intencion porsupuesto
7
Cita de: penumbra en Febrero 25, 2015, 03:35:25 AM
Lo que pasa es que si se usa el evento de colisión (como especificó en el comentario original), no es necesario usar una variable "origen", porque la palabra especial other ya se refiere a la instancia de la cual quiere leer las variables.

Si en lugar del evento de colisión se quiere usar otro lugar, entonces sí habría que utilizar una variable para guardar el id de instancia.

Si eso es cierto disculpa, no habia leeido el comentario antes de responder.

tambien otra solucion o cambio seria crearla desde step y darle los valores desde la torre misma


en step:
objetivo=instance_nearest(x,y,obj_Enemy_Parent)

if distance_to_object(objetivo)<=Alcanse{
   Bala=instance_create(x,y,obj_Bala)
   Bala.sprite_index=Aspecto_Bala
   Bala.Dano=Dano
   Bala.Vel=Vel
   Bala.Alcanse=Alcanse
}
8
Para que te funcione bien las variables debei ir así


if origen=0{
origen=other.id
Alcanse=origen.Alcanse
Vel=origen.Vel
Dano=origen.Dano
}

Traduccion: Si el valor de origen de la flecha es = a 0, a este se le asigna la id de la torre que lo creo,
ahora a la flecha le traspasamos el valor de las demas variables,
esto se hiso así para que cuando aumente de nivel la torre,
se modifiquen las variables de dano vel alcanse a la torre,
asi evitar de crear un proyectil diferente para cada nivel.
por eso se usa tambien la variable de la imagen Aspecto_Bala,
así t podemos cambiar el aspecto de la bala al salir de la torre,
tambien nos ahorramos de crear una bala para cada torre,
ya que con este sistema solo con un objeto bala es suficiente


Como a origen ya le dimos el id del objeto creador, basta con usar origen.El valor de las variables de daño velocidad y alcance.
Se ve que no miraste bien el video
9
Una forma que esta buena, es comenzar algo sin ninguna idea en concreto y sin ponerte a pensar "Que me salga una idea, que me salga una idea", y derrepente te entran a salir las ideas en base a eso que hiciste
10
Lo que te esta planteando el compañero arcangelos es por codigo. Cuando tu vas a crear un codigo lo puedes colocar todo en el evento step, siempre y cuando lo tengas bien ordenado y declares primero las variables , luego las acciones
o puedes aprobechar la comodidad que nos brinda game maker (y es muy util para evitar que los codigos se confundan entre si) que son los diferentes eventos

La opcion que te plantea arcangelos es creando un codigo dentro de el evento animation end que se encuentra dentro de other
asi other/animation end


la otra opcion es en el evento step que pongas una condicional


if image_index>= el numero de la ultima imagen{
image_index=el numero de la subimagen que quieres que quede;
image_speed=0; //Para quitar la velocidad de la imagen
}


pero ya que el programa nos brinda esas comodidades seria combeniente aprobecharlas

y para que te comiense con la primera sub imagen, en el evento Create ponele image_index=0
11
A mi me da curiosidad saber como lo solucionaste
12
A mi me ha pasado, y la unica solucion que encontre es duplicar el room y luego borrar el otro
13
Te hago una pregunta que segun la respuesta te puedo ayudar o no ¿Por que motivo quieres que la room sea persistente?
14
Juegos en desarrollo / Re:Dungeon Pets 2: Dunpets World
Febrero 23, 2015, 09:51:02 PM
La verdad que te felicito, He mirado tus juegos y tenes un talento impresionante para diseñar los juegos. Tambien se nota que le pones un monton de Voluntad, Nuevamente te recontra felicito
15
Creo que lo que quieres decir es que tu room es persistente, no parent