Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: x_dario_X en Enero 05, 2010, 04:01:21 AM

Título: espada en juego de plataforma
Publicado por: x_dario_X en Enero 05, 2010, 04:01:21 AM
 Hola, estuve intentando en hacer que mi personaje golpee con una espada, he logrado buenos avances... pero no me ha salido bien.

Los ejemplos que encontre son de zelda solamente, el mio es de plataforma.

Lo que tengo realizado hasta el momento, es un sprite del personaje con la espada, con movimiento, y otro sprite del mismo movimiento de la espada pero sola, como mascara, para que agregada en las mismas coordenadas se animen en simultaneo, y de esta manera, solo la espada sea la que ejersa el evento de colision (la espada en mask).

mi idea es hacer que cuando el personaje "espadee", lo haga quedandose quieto, que no se pueda deslizar durante la accion. pero que tambien pueda "espadear" cuando salte, sin frenar el impulso.

muchas gracias.
Título: Re: espada en juego de plataforma
Publicado por: Texic en Enero 05, 2010, 05:39:30 AM
Tambien lo puedes hacer en movimiento, simplemente crea otro objeto de espada con la
sprite de mascara como dijiste y en el evento step le das a igualar el X, Y, Hspeed y Vspeed del personaje
o Direction y Speed, segun c?mo lo hayas hecho
Título: Re: espada en juego de plataforma
Publicado por: x_dario_X en Enero 05, 2010, 02:14:01 PM
Texic..., aqui tambien  :-[ ... si puedes mostrame, de forma escrita como seria que quedaria, en scrips o en D&D  :-[
Título: Re: espada en juego de plataforma
Publicado por: deathmetal en Enero 05, 2010, 06:04:12 PM
sencioo:) mira

evento pressionar tecla del personaje:

instance_create(x,y,objespadazo)

evento step del objeto objespadazo:


x=personajeobj.x
y=personajeobj.y




y para optimizarlo, podrias crear una variable de direccion o checar el sprite asi:

if personajeobj.sprite_index=personajeizquierda{sprite_index=espadazoizq}
if personajeobj.sprite_index=personajederecha{sprite_index=espadazoder}

o mejor aun, si aprendes a usar la funcion image_xscale=-1 te ahorrarias muchos sprites ;) saludos
Título: Re: espada en juego de plataforma
Publicado por: x_dario_X en Enero 06, 2010, 02:37:28 AM
mmm... mira, te muestro como es el metodo que estoy usando actualmente para mi personaje principal.

Information about object: heroe

Sprite: quieto_der
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: sprite12

Create Event:
execute code:




image_speed = 0.5



right = true


jumpcontrol = false



jump = false



Alarm Event for alarm 0:
execute code:

jumpcontrol = false

Step Event:
execute code:



gravity_direction = 270;

if place_free(x,y+1)
{
gravity = 1.0;
}
  else
{
gravity = 0;
}



if (vspeed > 12) vspeed = 12;

execute code:


if keyboard_check(vk_up) and jumpcontrol = true
{
vspeed -= 3.8
}


End Step Event:
execute code:


if right = true and vspeed < 0
{
sprite_index = salto_der;
}
else if right = false and vspeed < 0
{
sprite_index = salto_izq;
}

execute code:



if right = true and vspeed = 0 and jump = true
{
sprite_index = salto_der;
}
else if right = false and vspeed = 0 and jump = true
{
sprite_index = salto_izq;
}

execute code:



if right == true and vspeed > 0
{
sprite_index = salto_der
}
else if right == false and vspeed > 0
{
sprite_index = salto_izq
}



Collision Event with object object3:
execute code:



if other.y > self.y
{
if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270);
  vspeed = 0;
  jump = false
}
else
{
if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270);
  vspeed = 0;
}


Keyboard Event for <no key> Key:
execute code:



if right = true
{
sprite_index=quieto_der
}
else
{
sprite_index=quieto_izq
}

Keyboard Event for <space> Key:  // con esta tecla quiero que "espadee"

Keyboard Event for <Left> Key:
execute code:

sprite_index = corre_izq


right = false


{
  if place_free(x-4.5,y) x -= 4.5;
}



Keyboard Event for <Right> Key:
execute code:

sprite_index = corre_der


right = true


{
  if place_free(x+4.5,y) x += 4.5;
}



Other Event: Outside Room:
execute code:

next_room(global.izquierda,global.derecha,global.arriba,global.abajo)

Key Press Event for <Up> Key:
execute code:



if (not place_free(x,y+1))
{
jumpcontrol = true
alarm[0] = 4
jump = true
}


... es el mejor engine de plataforma que pude encontrar y modificar a mi gusto..., pero la parte de "espadear"... no logro proyectarla bien...  :'( lo intente pero me saltan errores. principalmente cuan quiero lograr que espadee saltando (usando es mismo sprite de golpe en el suelo) y veo como la mascara (la espada sola) queda retrasada en el aire. ?_?
Título: Re: espada en juego de plataforma
Publicado por: Texic en Enero 06, 2010, 02:59:20 AM
en vez de gravedad usa vspeed, quedaria asi

if place_free(x,y+1)
{
vspeed+=1;
}
else
{
vspeed=0;
}

y en el step de la espada s?lo esto

x=personaje.x
y=personaje.y
(no es necesario, pero para m?s precision)
vspeed=personaje.vspeed
hspeed=personaje.hspeed


y

Keyboard Event for <no key> Key:
execute code:

if right = true
{
sprite_index=quieto_der
}
else
{
sprite_index=quieto_izq
}

No lo pongas ahi, ponlo en step y checkeando que todas las teclas que usas (arriba, abajo, etc)
no esten presionadas (con keyboard_check(vk_up) o la tecla que quieras checkear, te dara 0
cuando no esta presionada y 1 si lo esta)

Espero que te sirva

PD: Deberias usar el GM8 asi te puedo ayudar mejor ;)
Título: Re: espada en juego de plataforma
Publicado por: x_dario_X en Enero 06, 2010, 03:01:19 PM
cuando marcas el step de la espada... (sprite de la mask de la espada sola, o el personaje golpeando?)

x=personaje.x
y=personaje.y
(no es necesario, pero para m?s precision)
vspeed=personaje.vspeed
hspeed=personaje.hspeed

... "personaje"... te refieres al sprite de personaje comun, o el personaje golpeando...?

... ah... y como involucro la mask de la espada... o sea... mmm

va... en objetos, tengo:
                                      HEROE
                                      HEROE GOLPEANDO
                                      ESPADA (mascara)


... perdon jajaja... ya me marieeee.. jajaja... igual sigo intentando con esto que me has pasado... :-[
Título: Re: espada en juego de plataforma
Publicado por: Texic en Enero 07, 2010, 12:16:36 AM
Personaje es el objeto del personaje comun, ninguna sprite
El mask de la espada es el de la espada sola.
Lo que hiciste esta mal, el heroe debe tener un solo objeto y cambiar de sprite al golpear.
En el evento animation end le das que si las sprite del heroe es la de golpeando entonces
cambia a la sprite comun.. Es dificil explicar a ciegas, porque no me pasas tu proyecto y te
ayudo con eso? (No te lo voy a robar, tengo mis propios asuntos ;))