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

1
MMmm. .   el codigo del post anterior es bueno si quieres desactivar los objetos que esten fuera, pero los objetos seguiran ahi. . .   

Si usas ese codigo, cuando la bala salga de la pantalla, se desactivara. .  si en algun momento entra a pantalla, volvera a estar activa y quizas esto no te convenga.

Otra alternativa es, utilizando mas o menos la misma idea, utilizar view_xview, view_yview, view_wview y view_hview  para determinar los limites de la pantalla y establecer en el step del objeto bala algo asi:

if (x < view_xview[0]) or (x > view_xview[0]+view_wview[0]){
    instance_destroy();
}

Lo anterior para destruir el objeto si sale de pantalla por los limites horizontales.   Puedes agregar los otros dos parametros para los limites verticales.
2
Que raro. . 

Tal vez si explicas un poco mas el codigo de tus objetos  (create, step)...

Casi estaba seguro que el uso de la "id" si te funcionaria. .     :(
3
Si "pistolero" esta creando a "pies", entonces:

En la parte de "pistolero" donde creas a pies

piesobj = instance_create(x,y,pies);

Asi la variable "piesobj" guardara la id del objeto pies creado.


Cuando "pistolero" sea destruido, en su destroy_event pones:

with (piesobj) instance_destroy();


Puedes intentarlo, luego nos dices si funciono.

Saludos!!
4
Preguntas y respuestas / Re: Cambiar el image_index
Julio 21, 2011, 07:10:44 PM
Hola, que tal!!

La respuesta anterior es una muy buena forma de realizar lo que deseas. Yo solo te tengo un par de observaciones, no se si las hayas considerado:

1.  Si tu total de imagenes es de 10, entonces dichas imagenes estan numeradas del 0 al 9.

2.  La funcion random te entrega numeros con decimales.  

En algunas ocasiones, sobre todo cuando hacia uso del evento draw, si ponia image_index = 4.5; (por ejemplo), yo esperaba que me mostrara la imagen 4 y en realidad me mostraba la 5.  Quizas es lo que te este ocurriendo a ti. .

Podrias tambien intentar reducir el random a 8.5 por ejemplo y observar que es lo que sucede.   

Saludos!!
5
Estas programando un Arkanoid o algo asi??  jejeje   8)


Mira, te voy a anexar un archivo (es de GM7) donde se ve la interaccion de objetos que se mantienen rebotando en un cuarto.  Esperemos que te sea de ayuda.    :)

Saludos!! 

6
No hay de que!!   8)

Jejeje. . .   con tantas funciones a disposicion, suele pasar que se nos olviden a veces hasta las mas basicas. . .   :-[

Suerte con tu juego, aqui seguimos!!   :)

Saludos!!
7
Ahh. . . ok. .   ;)

Pues si el objeto movil va a interactuar con uno solido, tienes la funcion  move_bounce_solid   que funciona si los objetos estan controlados por los parametros hspeed y vspeed.  Con esta funcion por ejemplo puedes hacer que una pelota se la pase rebotando dentro de un cuarto.

Si tu objeto solamente se mueve horizontalmente, entonces la funcion invertira la velocidad horizontal cuando se presente una colision con un solido.

Ahora si te entendi?? . . .  jejeje   :-[
8
Preguntas y respuestas / Re: Desvanecer sprite
Julio 20, 2011, 06:24:21 AM
Que bueno que te fue de utilidad mi propuesta de c?digo.   :)

Soy nuevo en este foro y la verdad me dio mucho gusto ver que aqui se pueden ayudar entre todos para lograr los proyectos que tenemos en game maker. :D

Saludos y por aqui seguimos!! 

P.D.  Luego me avisas cuando tengas un demo jugable de tu RPG!!, ok? 
9
Hola!!

Tu duda es, por ejemplo, para hacer que un objeto se mueva izquierda-derecha ciclicamente??

Si fuera asi, pues tienes varias opciones, puede ser por tiempo, distancia recorrida, colision con algun otro objeto. 

Por tiempo, puedes usar las alarmas.  En create event defines la velocidad y la alarma:

hspeed = 4;
alarm[0] = 100;

y en alarm 0 event pones:
hspeed *= -1;
alarm[0] = 100;

Asi el objeto cambiara de direccion cada 100 pasos (el codigo funciona para GM7).

Si entendi correctamente tu duda??. .   Espero que si y que te sea de utilidad mi comentario.

Saludos!!
10
Preguntas y respuestas / Re: Desvanecer sprite
Julio 19, 2011, 11:34:03 PM
Ok. .  que bueno que te sirvio el codigo. .

Entiendo que tu problema ahora es generar el "momento" para que se realice el desvanecimiento.

Si lo que quieres, por ejemplo, es crear el objeto y un cierto tiempo despues que se desvanezca, entonces (ojo, es para GM7):

En create event: 
alarm[0] = 200;  // Al crearse el objeto, se configura esta alarma
permiso = 0;     // variable que indica cuando desvanecer y cuando no

en Alarm 0 event:
permiso = 1;    // pasado el tiempo, cambiamos el estado de la variable

en Step event:

if (permiso == 1){
   if (alfa > 0){
      alfa -= 0.01;
   }
}

Si te fijas, la variable "permiso" es la que detona el desvanecimiento, y puedes cambiar el valor de dicha variable con un sin fin de situaciones (si el objeto salta, toca solido, su velocidad es de algun valor, etc, etc)

Dale un intento, espero que te funcione.  Saludos!!
11
Preguntas y respuestas / Re: Desvanecer sprite
Julio 19, 2011, 06:31:40 PM
Hola!!

Como dice la respuesta anterior, puedes usar la funcion draw_set_alpha. . . peeeeeero. . .  si modificas el parametro alfa asi, estaras afectando a todos los sprites que se dibujen despues de ajustar el parametro, por lo que te verias forzado a estarlo ajustando.

Una forma que a mi me funciona es la siguiente  (probada en GM7 Pro):

En create event:

alfa = 1;  //Para que el sprite se dibuje normal

En Step event:

if (alfa > 0) alfa -= 0.1; 

// variare el alfa de 1 a 0 en decrementos de 0.1.   

en draw event:
draw_sprite_ext(sprite_index,image_index,x,y,1,1,0,c_white,alfa);
//Se dibuja el sprite con el valor de alfa actual.

En la parte del step event solo ajustas las condiciones que te indicaran cuando hay que comenzar la difuminacion del sprite. 
Tambien funciona a la inversa si mueves el alfa de 0 a 1.

Espero esta idea te sea de ayuda, saludos!!
12
Hola!!

Dices que ya has intentado colocar un objeto solido para marcar limite y no te funciono??

Eso es raro. .   

En mi experiencia he programado practicamente juegos de plataformas por lo que tu situacion es de lo mas comun que he visto y la verdad a mi me ha funcionado muy bien el uso de "solidos invisibles" para marcar limites ya sean paredes, techos o pisos.

En mi caso lo que hago es colocar los solidos donde deseo establecer limites, y luego con el objeto movil, en el "step event" revisar la posibilidad de moverse.

Por ejemplo.. .  si mi personaje solo se mueve al presionar la tecla derecha, en el step event uso  (para GM7):

  if (place_free(x+4,y)) x += 4;

Asi el personaje solo avance 4 pixeles por paso siempre y cuando el lugar este libre.

Si el objeto trae velocidad, entonces pongo:

if (not place_free(x+hspeed,y)) hspeed = 0;

Y este codigo aplica tanto si la velocidad es positiva como negativa.


Lo anterior no me ha generado conflictos con la gravedad. 

Espero te sea de ayuda, si no, pues aqui seguimos comentando.

Saludos!!