Hice un ejemplo que no usa físicas, no está bien pulido pero funciona, el problema que tiene es que cuando el puntero se mueve muy rápido la bola se suelta.
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.
1442
Preguntas y respuestas / Re:problema con fisicas
Febrero 01, 2015, 05:23:40 PM
Creo que el primer error es éste
Me parece que en realidad los objetos no tiene "physics" activadas, porque el código que muestras funciona, verifica eso.
Cita de: zorge en Febrero 01, 2015, 05:05:04 AMun objeto con "physics" no se puede usar en una room sin "physics" (al contrario si se puede).
... los objetos usan physica pero la room no ...
Me parece que en realidad los objetos no tiene "physics" activadas, porque el código que muestras funciona, verifica eso.
1443
Preguntas y respuestas / Re:instance_create con efecto alpha?
Febrero 01, 2015, 03:25:25 AM
Modifica un poco el código de creación:
[gml]
with( instance_create(100,200,personaje) )
{
image_alpha = 0
alarm[0] = 1;
}
[/gml]
[gml]
with( instance_create(100,200,personaje) )
{
image_alpha = 0
alarm[0] = 1;
}
[/gml]
1444
Preguntas y respuestas / Re:[AYUDA] Homing missile - Misil dirigido
Enero 31, 2015, 03:51:22 PM
Parece que no hay error, sólo falta hacer algo cuando no exista la instancia objetivo, como buscar otro objetivo:
[gml]
///Evento Step
if instance_exists(target) //Para prevenir el error de que haya sido destruido el objeto antes de comenzar...
{
motion_add(point_direction(x,y,target.x,target.y), 0.5); //Direccion que debe seguir...
}
else target = instance_nearest(x,y,OBJECT); //Elije otro objetivo
[/gml]
¿Qué es lo que hace mal?
[gml]
///Evento Step
if instance_exists(target) //Para prevenir el error de que haya sido destruido el objeto antes de comenzar...
{
motion_add(point_direction(x,y,target.x,target.y), 0.5); //Direccion que debe seguir...
}
else target = instance_nearest(x,y,OBJECT); //Elije otro objetivo
[/gml]
¿Qué es lo que hace mal?
1445
Preguntas y respuestas / Re:¿Como hacer que un objeto no se salga de la room?
Enero 31, 2015, 06:03:02 AM
Escribe esto en el evento Intersect Boundary:
[gml]
x = xprevious;
y = yprevious;
[/gml]
Si quieres algo más elaborado, proporciona más información, como qué tipo de juego es, y por si acaso la versión de GM.
[gml]
x = xprevious;
y = yprevious;
[/gml]
Si quieres algo más elaborado, proporciona más información, como qué tipo de juego es, y por si acaso la versión de GM.
1446
Preguntas y respuestas / Re:explocion random
Enero 31, 2015, 05:53:29 AM
Crea una lista de objetos (o instancias) que se actualice en cada click, como en este ejemplo: http://www.comunidadgm.org/preguntas-y-respuestas/crear-un-objeto-al-azar/
1447
Preguntas y respuestas / Re:Aplicar un skew y doble sprite a d3d_draw_wall
Enero 30, 2015, 05:00:38 AM
¡Es cierto!, no contemplé el hecho de que el juego ya estuviera en modo 3D, mil disculpas, en ese caso lo recomendable es usar d3d_set_projection_ortho en vez de d3d_end, no estoy seguro pero es probable que esa maniobra también borre la surface. Si el código está en el evento Create no necesitas poner surface_free porque esa función borra la superficie, y no creo que importe el orden en el que se definen las variables text y srf.
1448
Preguntas y respuestas / Re:¿Cambiar sprite de objeto mientras esta siendo presionado?
Enero 30, 2015, 01:23:38 AM
En ese caso vuelve a usar el código que te mostré al principio y agrega esto al evento Mouse Leave
[gml]
sprite_index = botonnormal;
[/gml]
[gml]
sprite_index = botonnormal;
[/gml]
1449
Preguntas y respuestas / Re:¿Cambiar sprite de objeto mientras esta siendo presionado?
Enero 29, 2015, 10:07:48 PM
Vaya, no me lo esperaba, mejor usa este código en el evento Step:
[gml]
if( mouse_check_button(mb_left) and collision_point(mouse_x,mouse_y,id,false,false) )
sprite_index = botonefecto;
else sprite_index = botonnormal;
[/gml]
[gml]
if( mouse_check_button(mb_left) and collision_point(mouse_x,mouse_y,id,false,false) )
sprite_index = botonefecto;
else sprite_index = botonnormal;
[/gml]
1450
Preguntas y respuestas / Re:¿image_xscale, image_yscale en sprite?
Enero 29, 2015, 10:05:26 PM
En el evento de colisión, incrementa los valores de escala, ya sea sumado o multiplicando. Ejemplos:
[gml]
image_xscale += 0.1;
image_yscale += 0.1;
[/gml]
ó
[gml]
image_xscale *= 1.2;
image_yscale *= 1.2;
[/gml]
[gml]
image_xscale += 0.1;
image_yscale += 0.1;
[/gml]
ó
[gml]
image_xscale *= 1.2;
image_yscale *= 1.2;
[/gml]
1451
Preguntas y respuestas / Re:¿image_xscale, image_yscale en sprite?
Enero 29, 2015, 09:34:07 PM
Asigna un sprite a un objeto y cambia los valores de esas variables, que por defecto valen 1.
Si quieres cambiar el tamaño de un sprite sin asignarlo a un objeto, usa las funciones draw_sprite_stretched ó draw_sprite_ext.
Si quieres cambiar el tamaño de un sprite sin asignarlo a un objeto, usa las funciones draw_sprite_stretched ó draw_sprite_ext.
1452
Preguntas y respuestas / Re:¿Cambiar sprite de objeto mientras esta siendo presionado?
Enero 29, 2015, 09:26:59 PM
Prueba estos códigos:
[gml]
///Evento Left Pressed
sprite_index = botonefecto;
[/gml]
[gml]
///Evento Left Released
sprite_index = botonnormal;
[/gml]
[gml]
///Evento Left Pressed
sprite_index = botonefecto;
[/gml]
[gml]
///Evento Left Released
sprite_index = botonnormal;
[/gml]
1453
Preguntas y respuestas / Re:Crear un objeto al azar
Enero 29, 2015, 09:19:36 PM
Entonces parece que si entendí bien, aquí está el ejemplo con formato de GM8.0
Yo lo hice transformando un sólo tipo de objeto, pero tú necesitas que sean diferentes tipos de objetos, el principio es el mismo, en vez de usar la variable id se usaría la variable object_index o se crearía un objeto padre, intenta hacerlo por ti, así aprenderás más rápido, si no te convence pregunta de nuevo, estaremos pendientes para ayudarte.
Yo lo hice transformando un sólo tipo de objeto, pero tú necesitas que sean diferentes tipos de objetos, el principio es el mismo, en vez de usar la variable id se usaría la variable object_index o se crearía un objeto padre, intenta hacerlo por ti, así aprenderás más rápido, si no te convence pregunta de nuevo, estaremos pendientes para ayudarte.
1454
Preguntas y respuestas / Re:Movimiento relativo
Enero 29, 2015, 04:35:09 AM
Espero haber entendido bien, quieres que los objetos B y C roten alrededor del objeto A, si es que se tocan.
Hice un ejemplo en el que uso el siguiente código:
[gml]
///Click en obA
with( obPadre ) //con los objetos B y C
{
if( place_meeting(x,y,other) ) //si está tocando esta instancia
{ //revisar la posición relativa
if( x < other.x ) //si está a la izquierda...
{
if( y < other.y ) y += 32; //...y arriba, bajar 32 pixeles
else x += 32; //...y abajo, mover a la drecha
}
else //si está a la derecha...
{
if( y < other.y ) x -= 32; //...y arriba, mover a la izquierda
else y -= 32; //...y abajo, subir 32 pixeles
}
}
}
[/gml]
hice 2 objetos "obB" y "obC" que son hijos de "obPadre", cuando se hace click en el objeto A se revisa la posición relativa de los objetos y se colocan en una nueva posición.
En el ejemplo los objetos se transportan de forma instantánea, para que los objetos se muevan lentamente hasta su nueva posición el código se complicaría un poco.
Hice un ejemplo en el que uso el siguiente código:
[gml]
///Click en obA
with( obPadre ) //con los objetos B y C
{
if( place_meeting(x,y,other) ) //si está tocando esta instancia
{ //revisar la posición relativa
if( x < other.x ) //si está a la izquierda...
{
if( y < other.y ) y += 32; //...y arriba, bajar 32 pixeles
else x += 32; //...y abajo, mover a la drecha
}
else //si está a la derecha...
{
if( y < other.y ) x -= 32; //...y arriba, mover a la izquierda
else y -= 32; //...y abajo, subir 32 pixeles
}
}
}
[/gml]
hice 2 objetos "obB" y "obC" que son hijos de "obPadre", cuando se hace click en el objeto A se revisa la posición relativa de los objetos y se colocan en una nueva posición.
En el ejemplo los objetos se transportan de forma instantánea, para que los objetos se muevan lentamente hasta su nueva posición el código se complicaría un poco.
1455
Preguntas y respuestas / Re:Aplicar un skew y doble sprite a d3d_draw_wall
Enero 29, 2015, 03:41:01 AM
Lo que puede causar problemas es que se usa la función surface_create en cada evento Draw, se están creando nuevas superficies sin borrar las anteriores, esto puede ralentizar el juego o llenar toda la memoria, si la nueva textura no cambia con el tiempo, conviene crearla una sola vez en el evento Create, o por lo menos usar la función surface_free antes de crear otra.
Lo demás parece estar bien, pero tal vez hay otra pieza de código que está borrando la textura (tal vez no hay suficiente memoria de textura y se sobrescribe), el manual recomienda verificar que la superficie existe antes de usarla con la función surface_exists.
Puede ser que el objeto que crea la surface tenga menor depth que los otros objetos que usan esa surface, entonces usan una surface creada en el step anterior y está corrupta, eso se solucionaría creándola en el evento Create.
Si persisten los problemas, lo mejor será convertir la surface en un sprite o background usando las funciones que mencioné anteriormente.
Lo demás parece estar bien, pero tal vez hay otra pieza de código que está borrando la textura (tal vez no hay suficiente memoria de textura y se sobrescribe), el manual recomienda verificar que la superficie existe antes de usarla con la función surface_exists.
Puede ser que el objeto que crea la surface tenga menor depth que los otros objetos que usan esa surface, entonces usan una surface creada en el step anterior y está corrupta, eso se solucionaría creándola en el evento Create.
Si persisten los problemas, lo mejor será convertir la surface en un sprite o background usando las funciones que mencioné anteriormente.