Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Como picar solo una roca  (Leído 691 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
en: Junio 04, 2019, 02:22:19 pm
Buenas a todos! He creado un sprite con forma de roca y con 4 subimagenes. La idea es que a cada golpe de pico la roca se vaya destruyendo. He creado una variabe destruccion_roca = 0 y cada vez que pico en una roca aumenta 1 o 2 dependiendo de si llevo o no el pico equipado, después dependiendo del valor de destruccion_roca asignar un sprite index determinado. El problema viene que no se donde colocar todo esto. Primero he intentado colocarlo en el ob_roca y funciona! pero cada vez que golpeo una roca veo como todas las rocas de la room sufren el mismo efecto y se van destrozando. No utilizo un evento de colisión para controlar este tipo de cosas, lo he echo así:

STEP del player

Código: [Seleccionar]
//----------PICAR ROCA---------------------------------------------------------



//Picar roca con o sin pico
if distance_to_object(ob_roca) < 4
and mouse_check_button_pressed(mb_left)
and position_meeting(mouse_x,mouse_y,ob_roca)
and poder_picar == true {

//Si no llevo pico
if pico_equipado == false{
ob_roca.vida_roca--;
recurso_roca++;
destruccion_roca++
poder_picar = false;
destruccion_roca ++
alarm[0] = room_speed * 1.5;
}
else {

//Si llevo pico
ob_roca.vida_roca -= 2;
recurso_roca      += 2;
destruccion_roca  += 2;
poder_picar = false;
alarm[0] = room_speed * 1.5;
}
}

mi idea es colocar algo tipo así para ir cambiando de subimagen:

Código: [Seleccionar]
if destruccion_roca = 0 {
ob_roca.image_index = 0
}

if destruccion_roca = 1 {
ob_roca.image_index = 1
}

if destruccion_roca = 2 {
ob_roca.image_index = 2
}

if destruccion_roca = 3 {
ob_roca.image_index = 3
}

Y que cada vez que golpee una roca determinada se vaya destruyendo, pero solo la roca que estoy golpeando

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 en: Junio 04, 2019, 08:13:36 pm
El error es que estas cambiando las variables del objeto roca, en lugar de la instancia que estas picando.
Para picar una piedra en particular necesitas saber su id.
Puedes usar instance_position
roca_id=instance_position(mouse_x, mouse_y, ob_roca)  ///guardamos la id en la variable roca_id
roca_id.vida_roca--  ///y le quitamos vida a esa instancia

En el siguiente codigo tienes varios if que puedes simplificar poniendo solo
image_index = destruccion_roca