Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: JuanD en Junio 09, 2010, 02:01:16 AM

Título: Problema con movimiento
Publicado por: JuanD en Junio 09, 2010, 02:01:16 AM
Bueno, antes tenia un problema y lo solucione creando 2 objetos del heroe principal (uno q mira a la derecha y otro a la izquierda), el problema es q cuando mi heroe camina a la derecha y quiero girar a la izquierda para en la posicion de la izquierda.

Aca pongo lo q puse en los obj heroe:
El obj_heroe1 mira a la derecha y el 2 a la izquierda.


obj_heroe1: cuando se oprime izquierda: Destruye el obj_heroe1 y crea al obj_heore2 (cuando el 2 se oprime izquierda camina hacia la izquierda).

obj_heroe2: cuando se oprime derecha: Destruye el obj_heroe2 y crea al obj_heroe1 (cuando el 1 se oprime derecha camina hacia la derecha).

Pero cuando pasa de obj_heroe1 al 2 y se mantiene oprimido la direccion izquierda no se mueve pero el heore2 muestra el sprite de movimiento hacia la izquierda; tambien pasa aun asi uno no continue oprimiendo izquierda.
Esto tambien sucede viceversa.


Alguna idea de como solucionarlo???
Título: Re: Problema con movimiento
Publicado por: MatuX en Junio 09, 2010, 03:59:11 AM
no hace falta dos objetos solamente tenes que tener los sprites de movimiento derecha e izquierda y haces lo siguiente

"boton derecha"

direction= 360;
speed= 2;
sprite_index= (el sprite movimiento dereecha);
image_speed= 0.5;

"boton izquierda"

direction=180;
speed= 2;
sprite_index= (el sprite movimiento izquierda);
image_speed= 0.5;

esta es una de las tanta formas de hacerlo y espero haber repuesto tu pregunta
:D :D
Título: Re: Problema con movimiento
Publicado por: JuanD en Junio 09, 2010, 04:57:51 AM
eso lo tenia pero lo cambie por q tenia un problema con los disparos, nesesitaba q cuando este el personaje a la derecha la bala salga el obj_disparo y cuando este a la izquierda el obj_disparo2 pero no logre ninguna forma para gacer eso.
Título: Re: Problema con movimiento
Publicado por: 15689 en Junio 09, 2010, 05:52:19 AM
pero eso se arregla facil, mira:
en el evento create de la bala
if obj_heroe.sprite_index=(el sprite movimiento derecha) or obj_heroe.sprite_index=(el sprite parado derecha)
{
direction=0
speed=5
}
else if obj_heroe.sprite_index=(el sprite movimiento izquierda)or obj_heroe.sprite_index=(el sprite parado izquierda)
{
direction=180
speed=5
}


y con eso te deberia de funcionar
suerte :P
Título: Re: Problema con movimiento
Publicado por: JuanD en Junio 09, 2010, 06:20:32 AM
 :o genial ya me funciono muchas grax, ahora solo una cosa:
Aca en la parte de los sprites de la izquierda nesesito que la bala salga la imagen invertida (es por q la bala tene una punta y un arco atras, y se be alrevez cuando uno dispara con este codigo sin hacer invertir la imagen), pss tonces que le a?ado a este codigo para q cuando dispare con los sprites de la izquierda la bala salga invertida?

if obj_heroe.sprite_index=(el sprite movimiento derecha) or obj_heroe.sprite_index=(el sprite parado derecha)
{
direction=0
speed=5
}
else if obj_heroe.sprite_index=(el sprite movimiento izquierda)or obj_heroe.sprite_index=(el sprite parado izquierda)
{
direction=180
speed=5
}
Título: Re: Problema con movimiento
Publicado por: Croer en Junio 09, 2010, 12:04:09 PM
una opcion que se me ocurre seria,si la bala no tiene animaci?n,creas una subimagen que mire a la derecha y otra a la izquierda con eso se puede decir que tienes dos sprites en uno. XD
Una vez lo tengas en el codigo que tienes puesto en el evento create pones esto:
if obj_heroe.sprite_index=(el sprite movimiento derecha) or obj_heroe.sprite_index=(el sprite parado derecha)
{
direction=0;
speed=5;
image_index=0;
}
else if obj_heroe.sprite_index=(el sprite movimiento izquierda)or obj_heroe.sprite_index=(el sprite parado izquierda)
{
direction=180;
speed=5;
image_index=1;
};

Esto te va a funcionar siempre que pongas bien el indice de la subimagen(image_index), ten en cuenta que siempre empiezan desde 0 y no desde 1, tambi?n f?jate que la subimagen coincida con la direcci?n correcta de la bala porque en el c?digo yo he puesto 0 como derecha y 1 como izquierda.
Si en un futuro quieres utilizarlo en otra cosa ten en cuenta que este en el evento create y no step o draw, porque estos eventos se actualizan cada milisegundo y te dar?a problemas.
Espero que te sirva. :)
Título: Re: Problema con movimiento
Publicado por: 15689 en Junio 09, 2010, 11:45:37 PM
lo que dice Croer es cierto pero si la bala tiene animacion usa esto
en el create de la bala

if obj_heroe.sprite_index=(el sprite movimiento derecha) or obj_heroe.sprite_index=(el sprite parado derecha)
{
direction=0
speed=5
image_index=1//la imagen por defecto
}
else if obj_heroe.sprite_index=(el sprite movimiento izquierda)or obj_heroe.sprite_index=(el sprite parado izquierda)
{
direction=180
speed=5
image_index=-1//te invierte la imagen a partir del eje x
}


si tienes la version lite usa esto:
en el create de la bala

if obj_heroe.sprite_index=(el sprite movimiento derecha) or obj_heroe.sprite_index=(el sprite parado derecha)
{
direction=0
speed=5
sprite_index=bala_derecha
}
else if obj_heroe.sprite_index=(el sprite movimiento izquierda)or obj_heroe.sprite_index=(el sprite parado izquierda)
{
direction=180
speed=5
sprite_index=bala_izquierda
}

aqui tienes que tener 2 sprite para la bala igual que el obj_heroe

pero si no tiene animacion puedes usar perfectamente el codigo que te paso Croer

suerte :p