Para eso ocupa image_angle, asi giras un sprite, los angulos son 0 (derecha) 90 (arriba) 180 (izquierda) 270 (abajo).
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.
17
Preguntas y respuestas / Re:contador de rooms
Mayo 27, 2014, 07:25:37 AM
debes crear un objeto persistente... que debes poner en el primer room de tu juego, ese objeto persistente, debe tener una variable contador, en el evento create, que inicies en 1 (ya que ya estas en un room)... eemmm mira, mejor te muestro con codigo:
Create:
Room start:
eso te funciona??
saludos :)
Create:
Código [Seleccionar]
contador = 1;
actual_id = room;
Room start:
Código [Seleccionar]
if (room != actual_id)
{
contador += 1;
actual_id = room;
}
eso te funciona??
saludos :)
18
Preguntas y respuestas / Re:player 2 de diferente color
Mayo 27, 2014, 06:58:26 AM
eso en versiones anteriores del game maker, era casi imposible, ya que gastaba demasiada memoria al reemplazar colores, en gms puedes apoyarte en los shaders, existe uno por ahi que encontré que reemplaza colores de un sprite, a mi me gustaria que haya un mejor manejo de las paletas de colores, asi como al estilo mugen con los archivos .act, pero bueno... esta es la pagina en donde lo habia encontrado :)
http://gmc.yoyogames.com/index.php?showtopic=589348
tambien implementa una forma de reemplazar varios colores a la vez, ahi entra tu creatividad en la programacion.
saludos :D
http://gmc.yoyogames.com/index.php?showtopic=589348
tambien implementa una forma de reemplazar varios colores a la vez, ahi entra tu creatividad en la programacion.
saludos :D
19
Preguntas y respuestas / Re:Interactuar con objetos
Mayo 20, 2014, 06:42:03 AM
collision_point te da un valor real, no booleano (true o false), por lo que no lo debes colocar al lado de un if, para detectar si una colision existe o no, debes colocar:
por otra parte no te entiendo mucho lo que dices... por lo que veo, quieres saber como hacer que al colisionar un objeto con otro y al presionar q pase algo que no se que es...
no se si a eso te refieres??
Saludos :)
Código [Seleccionar]
if (collision_point(x,y,obj,prec,notme) != noone)
{
// hacer algo
}
por otra parte no te entiendo mucho lo que dices... por lo que veo, quieres saber como hacer que al colisionar un objeto con otro y al presionar q pase algo que no se que es...
Código [Seleccionar]
if (collision_point(x,y,obj,prec,notme) != noone)
{
if (keyboard_check(ord('Q')))
{
// hacer algo
}
}
no se si a eso te refieres??
Saludos :)
20
Preguntas y respuestas / Re:variables
Abril 30, 2014, 09:11:05 PM
debes crear esto en algun objeto que se cree al comienzo
el el objeto que tenga vidas deberias tener algo asi
en create:
en step:
Saludos :)
Código [Seleccionar]
global.vidas = 3;
global.puntaje = 0;
el el objeto que tenga vidas deberias tener algo asi
en create:
Código [Seleccionar]
puntaje = 0;
en step:
Código [Seleccionar]
if (puntaje >= 100)
{
global.vidas += 1;
global.puntaje += 100;
puntaje = 0;
}
Saludos :)
21
Preguntas y respuestas / Re:como seria o te gustaria el game maker 9
Abril 30, 2014, 09:00:39 PM
A mi me gustaria que mejoraran el aspecto de los sprites, que se puedan agregar recursos de animaciones para manejar de una forma mas facil todo lo que tenga que ver con animacion sobre un sprite... asi por ejemplo... que exista una parte que diga animations, agregas una animacion y asignas un sprite... luego de eso eliges diferentes grupos de imagenes para una animacion.
y puedes asignarle que al termino de una animacion se vaya a otra... etc.
colocarle un loop, o que sea de tipo rebote, no se si me entienden... pero es algo parecido a como trabaja el construct 2 con las animaciones... como tambien la posibilidad de agregar puntos en el sprite, por ejemplo, si le agregas un punto "mano" a todas las imagenes de un sprite, que puede ser, por ejemplo, un caballero, y luego creas otro sprite espada, o cualquier otra arma, que tenga su centro en el mango, y despues en el objeto le colocarias algo asi como:
Encuentro seria bueno un manejo de colores para los sprites, ya como estan disponibles los shaders en GMS, ya es posible que sea mas facil el reemplazar colores... pero con una agrupacion de colores :D, osea que en un sprite tendrias una parte en donde agrupar colores en una paleta de colores, algo asi como colocarle nombres a cada grupo de colores, por ejemplo: ropa, zapatos, pelo, etc.. y que se puedan modificar algo asi:
que exista la posibilidad de agregar arrays de mas dimensiones!! seria util jeje.. y no se me ocurre otra cosa por ahora.. :P
y puedes asignarle que al termino de una animacion se vaya a otra... etc.
Código [Seleccionar]
animation_index = anim_walk; seria la animacion actual y se podria modificar
animation_speed = 0.18; la velocidad de animacion
colocarle un loop, o que sea de tipo rebote, no se si me entienden... pero es algo parecido a como trabaja el construct 2 con las animaciones... como tambien la posibilidad de agregar puntos en el sprite, por ejemplo, si le agregas un punto "mano" a todas las imagenes de un sprite, que puede ser, por ejemplo, un caballero, y luego creas otro sprite espada, o cualquier otra arma, que tenga su centro en el mango, y despues en el objeto le colocarias algo asi como:
Código [Seleccionar]
angle = point_direction(x,y,image.mano.x,image.mano.y);
draw_sprite_ext(spr_espada,-1,image.mano.x,image.mano.y,1,1,angle,c_white,1);
Encuentro seria bueno un manejo de colores para los sprites, ya como estan disponibles los shaders en GMS, ya es posible que sea mas facil el reemplazar colores... pero con una agrupacion de colores :D, osea que en un sprite tendrias una parte en donde agrupar colores en una paleta de colores, algo asi como colocarle nombres a cada grupo de colores, por ejemplo: ropa, zapatos, pelo, etc.. y que se puedan modificar algo asi:
Código [Seleccionar]
color_tint(color.ropa, c_green);
color_tint(color.zapatos, c_yellow);
que exista la posibilidad de agregar arrays de mas dimensiones!! seria util jeje.. y no se me ocurre otra cosa por ahora.. :P
22
Preguntas y respuestas / Re:problemas al pulsar el botón disparo
Abril 30, 2014, 08:26:17 PM
eso esta cuando presionas, o chequeas la tecla espacio?? porque por lo que veo, lo que hiciste fue comprobar que si el numero de balas es una cantidad que no se (me imagino que tal vez 0 por el problema), disparas una bala, y no puedes disparar otra porque el numero de balas es 1 en el room, hasta que esta sale y se destruye, ahora es 0 y puedes volver a disparar... ocupa mejor el evento key press (que tal vez esa tengas), y borra las acciones de test instance count que tienes... yo creo que ahi podras disparar :)... cualquier duda me dices!!
23
Preguntas y respuestas / Re:Ayuda con rebote al colicionar
Abril 30, 2014, 08:02:10 AM
Tienes que detectar la pared de forma precisa (lo cual es dificil)... yo ocupo este loop que me encontre hace tieeeempo y que lo adapté a cualquier direccion XD:
Solo pon esto en el evento step de la pelota. no agregues colisiones adicionales, en donde modifiques el rebote, no he visto que sucedería... debes crear la variable velocidad antes, y esa modifica a la hora de aumentar o disminuir la velocidad... espero que te ayude esto... XD hice un ejemplillo para que lo veas jeje...
Código [Seleccionar]
/***************************************************
movimiento "preciso"
***************************************************/
// velocidad de precision, va desde 0 a velocidad+1
vp = 0;
// loop para encontrar la velocidad adecuada
for (i=0; i<velocidad+1; i+=1)
{
// buscando la velocidad
if (place_free(x+lengthdir_x(i,direction),y+lengthdir_y(i,direction)))
vp = i;
else
break;
}
// si vp es 0, le damos un valor muy pequeno a speed para que se pueda realiar el rebote
if (vp<=1)
{
speed = 1;
// he visto que cuando es preciso, se queda pegado a veces
move_bounce_solid(0);
}
else
speed = vp;
// por si se pega en la pared
while !(place_free(x,y))
{
x += lengthdir_x(vp+1,direction+180);
y += lengthdir_y(vp+1,direction+180);
move_bounce_solid(0);
}
Solo pon esto en el evento step de la pelota. no agregues colisiones adicionales, en donde modifiques el rebote, no he visto que sucedería... debes crear la variable velocidad antes, y esa modifica a la hora de aumentar o disminuir la velocidad... espero que te ayude esto... XD hice un ejemplillo para que lo veas jeje...
24
Preguntas y respuestas / Re:Ayuda, los sprites se multiplican y me quitan las vidas de una sola vez
Abril 30, 2014, 06:21:48 AM
:o pero que es eso!! no entiendo mucho lo que trataste de decir, el sprite se te multiplica?? pero como?? que has hecho para que suceda eso? debes mostrar aunque sea como estas realizando la cosa, ya que no capto lo que dices.. lo otro, de que el enemigo te quita la vida de un solo guatacazo lo puedes realizar con una variable y una alarma, por ejemplo, en el evento create colocas:
Despues en colision con enemigo:
y finalmente en el evento alarm[0]:
eso te hara que al colisionar con el enemigo, actives la alarma y cuando se cumpla el tiempo, el personaje puede volver a ser dañado :)
Saludos
Código [Seleccionar]
golpeado = false;
Despues en colision con enemigo:
Código [Seleccionar]
if (golpeado == false)
{
{} // aca en este sector quitar una vida por ejemplo (no incluyas parentesis XD)
golpeado = true;
alarm[0] = 30; // aca coloca el tiempo que quieras
}
y finalmente en el evento alarm[0]:
Código [Seleccionar]
golpeado = false;
eso te hara que al colisionar con el enemigo, actives la alarma y cuando se cumpla el tiempo, el personaje puede volver a ser dañado :)
Saludos
25
Preguntas y respuestas / Re:Creación de objetos con cierta puntuación
Marzo 31, 2014, 03:41:49 AM
A ver... se me ocurre:
Código [Seleccionar]
// Evento Create
crear = false;
// Evento Step
if (puntaje mod 10 == 0 && puntaje > 0)
{
if (crear == false)
{
instance_create(x,y,objeto);
crear = true;
}
}
else
{
crear = false;
}
26
Preguntas y respuestas / Re:ayuda con esto
Marzo 29, 2014, 08:58:40 PM
Debes recorrer todos los enemigos, ya que si te diriges a "obj_enemigo.x" el game maker da como preferencia el objeto de menor id que sea obj_enemigo... para recorrer varios objetos del mismo tipo esta instance_find(objeto, n):
Los objetos "enemigos" los recorrerías asi:
La variable "esta_peleando" debe estar creada en el objeto enemigo... pero es una idea nada mas....
Saludos :)
Los objetos "enemigos" los recorrerías asi:
Código [Seleccionar]
for (i=0; i<instance_number(obj_enemigo); i+=1)
{
enemy[i] = instance_find(obj_enemigo,i);
// para saber si tu enemigo esta peleando
if (instance_exists(enemy[i]))
{
if (enemy[i].esta_peleando == false)
{
// atacar;
enemy[i].esta_pealeando = true;
}
}
}
La variable "esta_peleando" debe estar creada en el objeto enemigo... pero es una idea nada mas....
Saludos :)
27
Preguntas y respuestas / Rebote preciso?
Febrero 26, 2014, 10:46:31 PM
Hola Makeros! :). Ultimamente he estado realizando un juego a lo tipo pong, y como comunmente pasa, la pelotita se queda atrapada en algunas ocasiones en las murallas (por alta velocidad), en el jugador (que mas comunmente pasa porque el jugador se mueve), o con las mismas pelotitas... estuve jugando un poco con la fisica, pero no quiero algo tan realista (en el sentido de que al chocar una pelotita, no disminuya su velocidad), solo quiero que cambie su direccion.
Asi que me puse a hacer codigos :D :
Para hacer de el movimiento mas preciso y que no se salte un objeto que esté entremedio del trayecto de la bolita hice esto
en el evento step:
Hasta este momento, sólo la pelotita se mueve a una velocidad que esta entre 0 y max_speed, y no se salta ningun objeto, en este caso chequea sólo a obj_solido, pero tambien se puede hacer para el obj_jugador y obj_pelota.
Ya que hasta ahí es un movimiento mas preciso, no puedo hacer que la pelotita rebote en una muralla, ya que en ese momento speed = 0, y creo que la función move_bounce_solid() o move_bounce_all(), multiplica vspeed *=-1 o hspeed *=-1.
Que sería lo mas recomendable que pueda hacer? he intentado recurrir a modificar la variable "direction", pero no siempre
me hace como el efecto de rebote. por ejemplo, antes tenía esto para cuando la pelota chocaba con otra:
Pero no sirve cuando hay un choque con otra pelota que va practicamente en una direccion similar, no se produce un buen efecto.
hasta ahora el obj_pelota es solido y el obj_jugador tambien, el obj_jugador tiene un sprite como se muestra abajo, y cuando el jugador choca con la pelota, esta debe desviarse.
Es recomendable utilizar fisicas? hasta ahora no he podido hacer un buen efecto :-\
Saludos bien saludosos XD.
Asi que me puse a hacer codigos :D :
Para hacer de el movimiento mas preciso y que no se salte un objeto que esté entremedio del trayecto de la bolita hice esto
en el evento step:
Código [Seleccionar]
// variable que chequea la velocidad correcta
velp = 0;
// for de precision
for (i = 0; i <= max_speed + 1; i += 1)
{
// solo se chequea el objeto solido que es un cuadrado
colision = instance_place(x+lengthdir_x(i,direction),y+lengthdir_y(i,direction),obj_solido);
if (colision != noone)
{
break;
}
else
velp = i;
}
// asignamos la velocidad
speed = velp;
Hasta este momento, sólo la pelotita se mueve a una velocidad que esta entre 0 y max_speed, y no se salta ningun objeto, en este caso chequea sólo a obj_solido, pero tambien se puede hacer para el obj_jugador y obj_pelota.
Ya que hasta ahí es un movimiento mas preciso, no puedo hacer que la pelotita rebote en una muralla, ya que en ese momento speed = 0, y creo que la función move_bounce_solid() o move_bounce_all(), multiplica vspeed *=-1 o hspeed *=-1.
Que sería lo mas recomendable que pueda hacer? he intentado recurrir a modificar la variable "direction", pero no siempre
me hace como el efecto de rebote. por ejemplo, antes tenía esto para cuando la pelota chocaba con otra:
Código [Seleccionar]
direction = 180 - direction + 2*point_direction(x,y,other.x,other.y)
Pero no sirve cuando hay un choque con otra pelota que va practicamente en una direccion similar, no se produce un buen efecto.
hasta ahora el obj_pelota es solido y el obj_jugador tambien, el obj_jugador tiene un sprite como se muestra abajo, y cuando el jugador choca con la pelota, esta debe desviarse.
Es recomendable utilizar fisicas? hasta ahora no he podido hacer un buen efecto :-\
Saludos bien saludosos XD.
28
Preguntas y respuestas / Duda con Shaders: teñir color?
Febrero 14, 2014, 01:04:05 PM
Hola makeros! Tengo solo una duda :) , Alguien ha visto en algun lugar e internet o sabe como hacer un shader que tiña sólo los colores que tengan (en color HSV) El canal de saturación (S) mayor que 0??? asi no tiñe ni blancos, ni grises, ni negros, para que parezca al efecto que hace el game maker cuando uno tiene un sprite con rojos, verdes o azules, y va al editor de sprites y se encuentra con la herramienta "Colorize", que sólo colorea como dije anteriormente.
Para mi que se utiliza sólamente el Fragment shader, ademas... se pueden colocar condiciones if dentro del mismo programa del shader??
De antemano muchas gracias!!
Saludos :)
Para mi que se utiliza sólamente el Fragment shader, ademas... se pueden colocar condiciones if dentro del mismo programa del shader??
De antemano muchas gracias!!
Saludos :)
29
Preguntas y respuestas / Re:Problema con shaders
Febrero 10, 2014, 02:09:47 AM
Si, al final pude ver que esa era la mejor manera de hacerlo :)... pero aún no entiendo mucho la cosa de los shaders :-X
30
Preguntas y respuestas / Problema con shaders
Febrero 09, 2014, 07:59:06 PM
Hola a todos :), hoy me puse a experimentar con los shaders, lo cual es muy nuevo para mi :-[, por lo que decidi hacerle sombras a mis sprites, y me encontré con este codigo, super basico:
En vertex lo dejé como venia :P asi:
Y en fragment puse esto:
y sale bien todo... pero vi que tambien existe rgba, que necesita 4 parametros, ya que quiero que la sombra no sea tan intensa:
La sombra asi no es tan intensa, pero ahora no tiene la misma forma del sprite :S, tiene una forma cuadrada.
El shader lo utilicé en el evento draw :):
escala_x y escala_y son variables que yo utilizo para hacer de la escala algo mas manejable XD, que es lo que esta mal??
por otra parte, hay alguna pagina o manual que me recomienden para aprender a utilizar los shaders??
Muchas gracias por leer!!
En vertex lo dejé como venia :P asi:
Código [Seleccionar]
//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vColour = in_Colour;
v_vTexcoord = in_TextureCoord;
}
Y en fragment puse esto:
Código [Seleccionar]
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
gl_FragColor.rgb = vec3(0,0,0);
}
y sale bien todo... pero vi que tambien existe rgba, que necesita 4 parametros, ya que quiero que la sombra no sea tan intensa:
Código [Seleccionar]
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
void main()
{
gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
gl_FragColor.rgba = vec4(0,0,0,0.5);
}
La sombra asi no es tan intensa, pero ahora no tiene la misma forma del sprite :S, tiene una forma cuadrada.
El shader lo utilicé en el evento draw :):
Código [Seleccionar]
if (shader_is_compiled(sh_shadow))
{
shader_set(sh_shadow);
draw_sprite_ext(sprite_index, image_single, x - 5, y - 5, escala_x, escala_y, 0, c_black, 1);
shader_reset();
}
escala_x y escala_y son variables que yo utilizo para hacer de la escala algo mas manejable XD, que es lo que esta mal??
por otra parte, hay alguna pagina o manual que me recomienden para aprender a utilizar los shaders??
Muchas gracias por leer!!