Gracias por la respuesta :,3
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: Como crear un delta time general?
Abril 03, 2021, 04:17:22 AM
El tiempo de las tomo de mi juego son de 30fps (eso creo), pero el problema de solo cambiar el tiempo de las toons es que el juego puede ir muy acelerado en una PC potente o muy lento en una computadora de gama baja, por lo que sería muy inconcistente, lo que hace el delta time es compensar esos tiempos en los distintos dispositivos, pero quiero buscar una forma general de aplicarlo al juego.
18
Preguntas y respuestas / Como crear un delta time general? (RESUELTO)
Abril 03, 2021, 03:54:12 AM
Hola amigos :D
Hace tiempo una persona probó uno de mis juegos y le iba super acelerado, por lo que me dedique a investigar y me tope con un video de guinxu donde explicaba que es el delta time, vi algunos videos de como implementarlo pero era un código que se implementa uno por uno, mi pregunta es si existe alguna forma de implementar el deltatime en un solo script y que todo el tiempo del juego se base en el mismo?
Es que el problema es que tengo un proyecto muy avanzado y tendría que rediseñar por completo todo para implementar el deltatime.
De antemano gracias por la ayuda :,3
Hace tiempo una persona probó uno de mis juegos y le iba super acelerado, por lo que me dedique a investigar y me tope con un video de guinxu donde explicaba que es el delta time, vi algunos videos de como implementarlo pero era un código que se implementa uno por uno, mi pregunta es si existe alguna forma de implementar el deltatime en un solo script y que todo el tiempo del juego se base en el mismo?
Es que el problema es que tengo un proyecto muy avanzado y tendría que rediseñar por completo todo para implementar el deltatime.
De antemano gracias por la ayuda :,3
19
Preguntas y respuestas / Re: NO ENCUENTRO EL SPEED DE LA PROPIEDAD DE LA ROOM EN GMS 2
Marzo 29, 2021, 12:17:51 AM
Hola :3, lo que mi amigo Jucarave mostro son los ajustes de velocidad del juego en general, sin embargo si quieres que cada room tenga una velocidad diferente puedes irte a tu room, luego a "Creation code" o "Codigo de creacion" y escribir este codigo:
[gml]room_speed = (que velocidad quieres de la room)
//Ejemplo:
room_speed = 60;
//El codigo hara que la velocidad de la room sea de 60
[/gml]
Ahora en caso de que quieras cambiar la velocidad de todo el juego tambien puedes usar este codigo:
[gml]game_set_speed(velocidad del juego, gamespeed_fps)
//Ejemplo:
game_set_speed(60, gamespeed_fps)
//Ahora todo el juego va a estar basado en 60 frames por segundo :3[/gml]
Espero te halla sido util, y tambien un saludo jucarave xd
[gml]room_speed = (que velocidad quieres de la room)
//Ejemplo:
room_speed = 60;
//El codigo hara que la velocidad de la room sea de 60
[/gml]
Ahora en caso de que quieras cambiar la velocidad de todo el juego tambien puedes usar este codigo:
[gml]game_set_speed(velocidad del juego, gamespeed_fps)
//Ejemplo:
game_set_speed(60, gamespeed_fps)
//Ahora todo el juego va a estar basado en 60 frames por segundo :3[/gml]
Espero te halla sido util, y tambien un saludo jucarave xd
20
Preguntas y respuestas / Re: hola, tengo un problema
Marzo 05, 2021, 08:55:59 PM
hmmm, no crees que seria mas facil usar una pieza de codigo?
podrias probar con el siguiente código en un evento step:
[STEP]
[gml]
if keyboard_check(vk_left)
{
x -= 5
}
if keyboard_check(vk_right)
{
x += 5
}
if keyboard_check(vk_up)
{
y -= 5
}
if keyboard_check(vk_down)
{
y += 5
}
[/gml]
eso te daria un movimiento mas preciso, y en caso de que vaya muy lento o muy rápido puedes cambiar el número 5 por cualquier otro numero, entre mas bajo es mas lento y entre mas alto mas rapido, cualquier cosa me avisas amigo :3
podrias probar con el siguiente código en un evento step:
[STEP]
[gml]
if keyboard_check(vk_left)
{
x -= 5
}
if keyboard_check(vk_right)
{
x += 5
}
if keyboard_check(vk_up)
{
y -= 5
}
if keyboard_check(vk_down)
{
y += 5
}
[/gml]
eso te daria un movimiento mas preciso, y en caso de que vaya muy lento o muy rápido puedes cambiar el número 5 por cualquier otro numero, entre mas bajo es mas lento y entre mas alto mas rapido, cualquier cosa me avisas amigo :3
21
Preguntas y respuestas / Re: hola, tengo un problema
Marzo 04, 2021, 03:40:18 AM
Hey, que tal todo amigo? :D
puede que tu problema esté relacionado con un step que crea infinitamente copias de tu personaje a cada instante, aunque tambien puede que sea problema de la configuracion de graficos, pero para ser mas acertado podrias mostrarme parte del codigo de tu personaje?
puede que tu problema esté relacionado con un step que crea infinitamente copias de tu personaje a cada instante, aunque tambien puede que sea problema de la configuracion de graficos, pero para ser mas acertado podrias mostrarme parte del codigo de tu personaje?
22
Preguntas y respuestas / Re: Bug, no funciona el efecto de maquina de escribir la segunda vez que lo usas
Marzo 01, 2021, 06:32:02 PM
Amigo!!!
Use el codigo que me enviaste y ahora funciona a la perfección, de verdad te agradezco mucho :D
Use el codigo que me enviaste y ahora funciona a la perfección, de verdad te agradezco mucho :D
23
Preguntas y respuestas / Re: Bug, no funciona el efecto de maquina de escribir la segunda vez que lo usas
Marzo 01, 2021, 01:50:52 AM
gracias por la respuesta, ya trate de reiniciar el efecto de varias formas, con una alarma, al crearse, cuando se destruye y nada de eso parece funcionar :/
24
Preguntas y respuestas / Bug, no funciona el efecto de maquina de escribir la segunda vez [RESUELTO]
Febrero 23, 2021, 06:40:53 PM
Hola a todos :D
Hace tiempo hice mi sistema de diálogos rpg, era bastante sencillo, pero funcionaba, la cosa es que hace un par de dias encontre un nuevo renderizado de texto llamado scribble, trate de implementarlo en el sistema de diálogos que tenia, en un principio me parti la cabeza en pensar como adaptarlo, pero finalmente lo logre, todo parecía ir en orden y los textos se reproducen correctamente, pero la segunda vez que abría el texto comenzaba con problemas, ya que el efecto de la máquina de escribir (se escribe el texto letra por letra), trate de ver las variables una por una y parece que esta fallando la función de scribble de .typewriter_in(0.5, 1)
ok, encontre el problema pero lo complicado es como solucionarlo, si alguien sabe de algo que pueda funcionar o si ven algo raro a parte de la función del .typewriter_in, se lo agradeceria mucho, a continuación les dejo los codigos que uso:
[OBJ_TEXTBOX]
_Create_:
[gml]indice = 0;
mensaje = "";
msage = scribble(mensaje)
.typewriter_in(0.5, 1)
.typewriter_sound(snd_letras, 999, 1.0, 1.0)
paus = false;[/gml]
_step_
[gml]if (string_length(mensaje) < string_length(referencia.msg[indice])){
mensaje += referencia.msg[indice]
}
msage = scribble(mensaje)
.typewriter_in(0.5, 1)
.typewriter_sound(snd_letras, 999, 1.0, 1.0)
if msage.get_typewriter_state() = 1 && (indice <= referencia.final)
{
if keyboard_check_pressed(ord("X")) && (mensaje == referencia.msg[indice])
{
indice +=1;
global.mensaje +=1
if (indice > referencia.final) {obj_prota.stop = false; global.mensaje = 0; instance_destroy(); }
mensaje = "";
} else
{
mensaje = referencia.msg[indice];
}
}
if (msage.get_typewriter_state() < 1) && paus = false
{
if keyboard_check_pressed(ord("X"))
{
msage.typewriter_skip();
}
}
if (msage.get_typewriter_paused()){
paus = true
if keyboard_check_pressed(ord("X"))
{
msage.typewriter_unpause();
}
}[/gml]
_Draw_
[gml]draw_self(); //permitir ver el sprite del objeto
msage.draw(x + 20, y + 7)
draw_text(x + 20, y - 50, msage.get_typewriter_state())[/gml]
[OBJ_PROTA]
_Step_
[gml]//cama
if (stop == true) { exit; }
var bloque;
bloque = collision_circle(x,y,32,obj_cama,false,false);
if (keyboard_check_pressed(ord("X")) and bloque){
var msg;
msg = instance_create(0,0,obj_textbox);
msg.referencia = bloque;
stop = true;
}[/gml]
[OBJ_CAMA] (ejemplo)
_Create_
[gml]msg[0] = "Es tu cama suave y comoda.";
msg[1] = "Te encantaria quedarte a dormir un rato mas.";
msg[2] = "...";
msg[3] = "Mejor no.";
final = 3;
global.mensaje = 0;
[/gml]
[SCRIBBLE]
https://github.com/JujuAdams/Scribble
[FUNCIONES DE SCRIBBLE]
https://github.com/JujuAdams/scribble/wiki/scribble()-Methods
[VIDEO ILUSTRANDO MI PROBLEMA]
https://www.youtube.com/watch?v=wUExs6NVL84&feature=youtu.be
Si encuentran algo se los agradeceria muchisimo :,c
Hace tiempo hice mi sistema de diálogos rpg, era bastante sencillo, pero funcionaba, la cosa es que hace un par de dias encontre un nuevo renderizado de texto llamado scribble, trate de implementarlo en el sistema de diálogos que tenia, en un principio me parti la cabeza en pensar como adaptarlo, pero finalmente lo logre, todo parecía ir en orden y los textos se reproducen correctamente, pero la segunda vez que abría el texto comenzaba con problemas, ya que el efecto de la máquina de escribir (se escribe el texto letra por letra), trate de ver las variables una por una y parece que esta fallando la función de scribble de .typewriter_in(0.5, 1)
ok, encontre el problema pero lo complicado es como solucionarlo, si alguien sabe de algo que pueda funcionar o si ven algo raro a parte de la función del .typewriter_in, se lo agradeceria mucho, a continuación les dejo los codigos que uso:
[OBJ_TEXTBOX]
_Create_:
[gml]indice = 0;
mensaje = "";
msage = scribble(mensaje)
.typewriter_in(0.5, 1)
.typewriter_sound(snd_letras, 999, 1.0, 1.0)
paus = false;[/gml]
_step_
[gml]if (string_length(mensaje) < string_length(referencia.msg[indice])){
mensaje += referencia.msg[indice]
}
msage = scribble(mensaje)
.typewriter_in(0.5, 1)
.typewriter_sound(snd_letras, 999, 1.0, 1.0)
if msage.get_typewriter_state() = 1 && (indice <= referencia.final)
{
if keyboard_check_pressed(ord("X")) && (mensaje == referencia.msg[indice])
{
indice +=1;
global.mensaje +=1
if (indice > referencia.final) {obj_prota.stop = false; global.mensaje = 0; instance_destroy(); }
mensaje = "";
} else
{
mensaje = referencia.msg[indice];
}
}
if (msage.get_typewriter_state() < 1) && paus = false
{
if keyboard_check_pressed(ord("X"))
{
msage.typewriter_skip();
}
}
if (msage.get_typewriter_paused()){
paus = true
if keyboard_check_pressed(ord("X"))
{
msage.typewriter_unpause();
}
}[/gml]
_Draw_
[gml]draw_self(); //permitir ver el sprite del objeto
msage.draw(x + 20, y + 7)
draw_text(x + 20, y - 50, msage.get_typewriter_state())[/gml]
[OBJ_PROTA]
_Step_
[gml]//cama
if (stop == true) { exit; }
var bloque;
bloque = collision_circle(x,y,32,obj_cama,false,false);
if (keyboard_check_pressed(ord("X")) and bloque){
var msg;
msg = instance_create(0,0,obj_textbox);
msg.referencia = bloque;
stop = true;
}[/gml]
[OBJ_CAMA] (ejemplo)
_Create_
[gml]msg[0] = "Es tu cama suave y comoda.";
msg[1] = "Te encantaria quedarte a dormir un rato mas.";
msg[2] = "...";
msg[3] = "Mejor no.";
final = 3;
global.mensaje = 0;
[/gml]
[SCRIBBLE]
https://github.com/JujuAdams/Scribble
[FUNCIONES DE SCRIBBLE]
https://github.com/JujuAdams/scribble/wiki/scribble()-Methods
[VIDEO ILUSTRANDO MI PROBLEMA]
https://www.youtube.com/watch?v=wUExs6NVL84&feature=youtu.be
Si encuentran algo se los agradeceria muchisimo :,c
25
Preguntas y respuestas / Re:Funcionamiento de get_save_filename() y get_open_filename() cambio de directorio
Enero 20, 2021, 03:31:53 PM
Ya intente ejecutarlo como administrador pero continua marcando el error :c
no sera mas facil usar una extensión que cambie el directorio?
no sera mas facil usar una extensión que cambie el directorio?
26
Preguntas y respuestas / Re:Funcionamiento de get_save_filename() y get_open_filename() cambio de directorio
Enero 20, 2021, 02:45:44 AM
hmm, ya intente cambiar eso pero continua marcando error :/
create:
[gml]//Creas la variable de la direccion.
directorio = "C:\Users\Alemar5_2\Desktop\test\"[/gml]
step:
[gml]if keyboard_check_pressed(ord("S"))
{
screen_save(directorio + "screenshot.png")
};[/gml]
el error del debug: Error! not allowing file operation with filename 'C:\UsersAlemar5_2Desktop est"screenshot.png'.
create:
[gml]//Creas la variable de la direccion.
directorio = "C:\Users\Alemar5_2\Desktop\test\"[/gml]
step:
[gml]if keyboard_check_pressed(ord("S"))
{
screen_save(directorio + "screenshot.png")
};[/gml]
el error del debug: Error! not allowing file operation with filename 'C:\UsersAlemar5_2Desktop est"screenshot.png'.
27
Preguntas y respuestas / Re:Funcionamiento de get_save_filename() y get_open_filename() cambio de directorio
Enero 20, 2021, 01:43:05 AM
hola amigo, fijate que probe el codigo y no me lo reconocia con el "var", asi que se lo quite y de todas maneras me marcaba error, todo parecia ir bien pero en el debug me daba este error: Error! not allowing file operation with filename 'C:\Users\admin\Desktop.screenshot.png'.
pense que era por cuestion de que el directorio estaba mal escrito, pero coloque uno copiado directo de windows y me daba lo mismo, tambien puse el directorio como un texto colocandole el "" pero seguia sin correr, sin las comillas y con el var no funciona, alguna solucion? :-[
pense que era por cuestion de que el directorio estaba mal escrito, pero coloque uno copiado directo de windows y me daba lo mismo, tambien puse el directorio como un texto colocandole el "" pero seguia sin correr, sin las comillas y con el var no funciona, alguna solucion? :-[
28
Preguntas y respuestas / Re:Funcionamiento de get_save_filename() y get_open_filename() cambio de directorio
Enero 19, 2021, 04:47:23 PM
Muchas gracias a ambos, son todos unos genios :3
ya probe el codigo y me devuelve una ventana para guardar el archivo, sin embargo existiría una manera de guardar el archivo automáticamente en una carpeta determinada?
Digamos, que automáticamente guarde la imagen en c:/Administrador/Desktop, no es necesario que cuando se guarde el archivo sea tan visual, si no mas bien como un proceso en segundo plano...
Igual gracias por la ayuda chicos :3
ya probe el codigo y me devuelve una ventana para guardar el archivo, sin embargo existiría una manera de guardar el archivo automáticamente en una carpeta determinada?
Digamos, que automáticamente guarde la imagen en c:/Administrador/Desktop, no es necesario que cuando se guarde el archivo sea tan visual, si no mas bien como un proceso en segundo plano...
Igual gracias por la ayuda chicos :3
29
Preguntas y respuestas / Funcionamiento de get_save_filename() y get_open_filename() cambio de directorio
Enero 19, 2021, 04:13:50 AM
Un saludo amigos! :)
Continuando con un tema anterior:
https://www.comunidadgm.org/preguntas-y-respuestas/cambio-de-directorio/msg126569/#msg126569
se dice que usando get_save_filename() y get_open_filename() podemos cambiar la ruta de guardado de algunos archivos, sin embargo no se como utilizar estas funciones, si alguien sabe como funciona y como puedo obtener un cambio de directorio se lo agradeceria
Continuando con un tema anterior:
https://www.comunidadgm.org/preguntas-y-respuestas/cambio-de-directorio/msg126569/#msg126569
se dice que usando get_save_filename() y get_open_filename() podemos cambiar la ruta de guardado de algunos archivos, sin embargo no se como utilizar estas funciones, si alguien sabe como funciona y como puedo obtener un cambio de directorio se lo agradeceria
30
Preguntas y respuestas / Unificación de códigos
Enero 16, 2021, 06:58:40 PM
Hola amigos, tengo una nueva duda jeje,
Tengo 2 codigos para 2 objetos diferentes, un objeto busca la textura de un tileset para hacer un reflejo.
El otro objeto funciona por medio de un shader el cual distorsiona el sprite como unas olas.
El objetivo es hacer que el objeto que refleja los tiles también distorsione el reflejo por medio del shader, pero no se como unirlos.
Estos son los codigos de mis objetos:
[OBJ_WATERTILES] (el reflejo)
[create]
[gml]/// Varialbes
var w = camera_get_view_width(view_camera);
var h = camera_get_view_height(view_camera);
water_surf = surface_create(w, h);[/gml]
[Draw]
[gml]/// @description
//Get tilemap
var tilemap = layer_tilemap_get_id("WaterTiles");
//Set surface
surface_set_target(water_surf);
//Draw tilemap
var cx = camera_get_view_x(view_camera);
var cy = camera_get_view_y(view_camera);
draw_tilemap(tilemap, -cx, -cy);
///Bunny
//Draw reflected player sprite
//Get player y offset for reflection
var yoff = (obj_vampire_bunny.sprite_height - obj_vampire_bunny.sprite_yoffset)*2;
//Set blendmode
gpu_set_blendmode_ext(bm_dest_alpha, bm_inv_src_alpha);
//Draw reflection
draw_sprite_ext(obj_vampire_bunny.sprite_index, obj_vampire_bunny.image_index, obj_vampire_bunny.x - cx, (obj_vampire_bunny.y-6+yoff) - cy, obj_vampire_bunny.image_xscale, -obj_vampire_bunny.image_yscale, 0, -1, 0.6);
//Reset blendmode
gpu_set_blendmode(bm_normal);
///PROTA
//Draw reflected player sprite
//Get player y offset for reflection
var yoff = (obj_prota.sprite_height - obj_prota.sprite_yoffset)*2;
//Set blendmode
gpu_set_blendmode_ext(bm_dest_alpha, bm_inv_src_alpha);
//Draw reflection
draw_sprite_ext(obj_prota.sprite_index, obj_prota.image_index, obj_prota.x - cx, (obj_prota.y-6+yoff) - cy, obj_prota.image_xscale, -obj_prota.image_yscale, 0, -1, 0.6);
//Reset blendmode
gpu_set_blendmode(bm_normal);
//Reset surface
surface_reset_target();
//Draw surface in game
draw_surface(water_surf, cx, cy);
[/gml]
[Begin Draw]
[gml]/// @description
if (!surface_exists(water_surf)){
var w = camera_get_view_width(view_camera);
var h = camera_get_view_height(view_camera);
water_surf = surface_create(w, h);
}
else{
surface_set_target(water_surf);
draw_clear_alpha(0, 0);
surface_reset_target();
}[/gml]
[OBJ_TEST] (Distorsion)
[Create]
[gml]uniTime = shader_get_uniform(sh_water, "Time");
uniTexel = shader_get_uniform(sh_water, "Texel");
[/gml]
[Draw]
[gml]shader_set(sh_water);
shader_set_uniform_f(uniTime, current_time);
var tex = sprite_get_texture(sprite_index, image_index);
shader_set_uniform_f(uniTexel, texture_get_texel_width(tex), texture_get_texel_height(tex));
draw_self();
shader_reset();[/gml]
[SH_WATER] (Shader de distorsion)
[Page 1]
[gml]//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
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;
}
[/gml]
[Page 2]
[gml]//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform float Time;
uniform vec2 Texel;
const float Xspeed = 0.01;
const float Xfreq = 20.0;
const float Xsize = 5.0;
const float Yfreq = 100.0;
const float Ysize = 20.0;
void main()
{
//X wave
float Xwave = sin(Time*Xspeed + v_vTexcoord.y*Xfreq) * (Xsize*Texel.x) * (v_vTexcoord.y);
float Ywave = sin(Time*Xspeed + v_vTexcoord.y*Yfreq) * (Ysize*Texel.y) * (v_vTexcoord.y);
gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord + vec2(Xwave, Ywave));
}
[/gml]
Si alguien tiene idea de como unir esos dos codigos se lo agradeceria mucho :,3
Tengo 2 codigos para 2 objetos diferentes, un objeto busca la textura de un tileset para hacer un reflejo.
El otro objeto funciona por medio de un shader el cual distorsiona el sprite como unas olas.
El objetivo es hacer que el objeto que refleja los tiles también distorsione el reflejo por medio del shader, pero no se como unirlos.
Estos son los codigos de mis objetos:
[OBJ_WATERTILES] (el reflejo)
[create]
[gml]/// Varialbes
var w = camera_get_view_width(view_camera);
var h = camera_get_view_height(view_camera);
water_surf = surface_create(w, h);[/gml]
[Draw]
[gml]/// @description
//Get tilemap
var tilemap = layer_tilemap_get_id("WaterTiles");
//Set surface
surface_set_target(water_surf);
//Draw tilemap
var cx = camera_get_view_x(view_camera);
var cy = camera_get_view_y(view_camera);
draw_tilemap(tilemap, -cx, -cy);
///Bunny
//Draw reflected player sprite
//Get player y offset for reflection
var yoff = (obj_vampire_bunny.sprite_height - obj_vampire_bunny.sprite_yoffset)*2;
//Set blendmode
gpu_set_blendmode_ext(bm_dest_alpha, bm_inv_src_alpha);
//Draw reflection
draw_sprite_ext(obj_vampire_bunny.sprite_index, obj_vampire_bunny.image_index, obj_vampire_bunny.x - cx, (obj_vampire_bunny.y-6+yoff) - cy, obj_vampire_bunny.image_xscale, -obj_vampire_bunny.image_yscale, 0, -1, 0.6);
//Reset blendmode
gpu_set_blendmode(bm_normal);
///PROTA
//Draw reflected player sprite
//Get player y offset for reflection
var yoff = (obj_prota.sprite_height - obj_prota.sprite_yoffset)*2;
//Set blendmode
gpu_set_blendmode_ext(bm_dest_alpha, bm_inv_src_alpha);
//Draw reflection
draw_sprite_ext(obj_prota.sprite_index, obj_prota.image_index, obj_prota.x - cx, (obj_prota.y-6+yoff) - cy, obj_prota.image_xscale, -obj_prota.image_yscale, 0, -1, 0.6);
//Reset blendmode
gpu_set_blendmode(bm_normal);
//Reset surface
surface_reset_target();
//Draw surface in game
draw_surface(water_surf, cx, cy);
[/gml]
[Begin Draw]
[gml]/// @description
if (!surface_exists(water_surf)){
var w = camera_get_view_width(view_camera);
var h = camera_get_view_height(view_camera);
water_surf = surface_create(w, h);
}
else{
surface_set_target(water_surf);
draw_clear_alpha(0, 0);
surface_reset_target();
}[/gml]
[OBJ_TEST] (Distorsion)
[Create]
[gml]uniTime = shader_get_uniform(sh_water, "Time");
uniTexel = shader_get_uniform(sh_water, "Texel");
[/gml]
[Draw]
[gml]shader_set(sh_water);
shader_set_uniform_f(uniTime, current_time);
var tex = sprite_get_texture(sprite_index, image_index);
shader_set_uniform_f(uniTexel, texture_get_texel_width(tex), texture_get_texel_height(tex));
draw_self();
shader_reset();[/gml]
[SH_WATER] (Shader de distorsion)
[Page 1]
[gml]//
// Simple passthrough vertex shader
//
attribute vec3 in_Position; // (x,y,z)
//attribute vec3 in_Normal; // (x,y,z) unused in this shader.
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)
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;
}
[/gml]
[Page 2]
[gml]//
// Simple passthrough fragment shader
//
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform float Time;
uniform vec2 Texel;
const float Xspeed = 0.01;
const float Xfreq = 20.0;
const float Xsize = 5.0;
const float Yfreq = 100.0;
const float Ysize = 20.0;
void main()
{
//X wave
float Xwave = sin(Time*Xspeed + v_vTexcoord.y*Xfreq) * (Xsize*Texel.x) * (v_vTexcoord.y);
float Ywave = sin(Time*Xspeed + v_vTexcoord.y*Yfreq) * (Ysize*Texel.y) * (v_vTexcoord.y);
gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord + vec2(Xwave, Ywave));
}
[/gml]
Si alguien tiene idea de como unir esos dos codigos se lo agradeceria mucho :,3