Noticias

¡Ayuda a la Comunidad GM, haz una donación!

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: Cambio de control sobre el objeto (personaje) al colisionar con objeto invisible  (Leído 241 veces)

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

Desconectado Raskovia

  • Visitante
  • *
  • Puntos: 4
  • Mensajes: 1
  • Sexo: Femenino
    • Ver Perfil
Hola! Estoy rompiéndome la cabeza por intentar sacar este código: el videojuego que estoy planteando, consiste en que sea jugado desde la vista de los 3 personajes principales; aunque la historia va a ser lineal. No puedo hacer que el objeto jugador cambie los sprites porque (a parte de que son un porrón) las mecánicas de juego difieren entre ellos. Mi primer pensamiento para el cambio fue que colisionasen con un objeto, pero no soy capaz de que funcione. No estoy buscando un menú de selección, sino que cuando un personaje colisione con un objeto invisible, ejecute el cambio de objeto.

Os dejo por aquí algunos de los códigos que intenté y que no funcionaron //surprise.

globalvar controlList

global.controlList[0]=obj_aster //> ASTER
global.controlList[1]=obj_aster //> ANZU
global.controlList[2]=obj_aster //> NORA
global.controlList[3]=obj_nora //> NORA
global.controlList[4]=obj_nora //> ASTER
global.controlList[5]=obj_nora //> ANZU
global.controlList[6]=obj_anzu //> ANZU
global.controlList[7]=obj_anzu //> NORA
global.controlList[8]=obj_anzu//> ASTER

global.controlCurrent = global.controlList

instance_change(controlList[global.controlCurrent],0)

if collision_point(x,y,obj_salida, false, true) = true
{ instance_change(obj_aster,false) }
else collision_point(x,y,obj_entrada, false, true)
{ instance_change(obj_aster,true) }

var controlList[0] =obj_aster //> ASTER
   if controlList[0] = true
     {collision_point(x,y,obj_entrada,false,true)}
     {instance_change(obj_entrada,true) }
       
then controlList0
{
    instance_change(obj_aster,false)
}

control = collision point (instance_change(obj_aster,true)) or  instance_change(obj_aster,false)

Muchísimas gracias por su tiempo :)
« última modificación: Diciembre 10, 2019, 04:10:13 pm por Raskovia »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Hola Raskovia

Veo algunas cosas mal en tu código.
Empezando porque declaras:
Código: [Seleccionar]
globalvar controlListy luego:
Código: [Seleccionar]
global.controlList[0]=obj_asterAunque se vean parecida y la variable sea la misma, son dos formas diferentes de declarar una variable y estás declarando 2 variables diferentes.
Te recomiendo dejar todo con "global." porque así veo que lo usa tu código, la otra variable no la usas.

Segundo, lo que haces es:
Código: [Seleccionar]
global.controlCurrent = global.controlListQuiere decir que a tu variable "Current" le estás asignando como valor el array completo de la "List" en vez de sólo una posición.
Te recomiendo cambiarlo por algo como:
Código: [Seleccionar]
global.controlCurrent = 0Eso para decirle al código que actualmente tu personaje es "obj_aster".

Luego, a tu objeto "obj_salida" y "obj_entrada" no tengo idea lo que hacen, no sé cuál es la mecánica que quisiste lograr con ello.

Lo que a mi se me ocurre es que uses un sólo objeto, ej: "obj_entrada"
y cuando lo creas, ponle una variable de creación (esas que asignas en la room, poniendo clic secundario sobre el objeto y luego "creation code")
Y le asignas el ID de uno de los personajes (cualquier número de 0 a 8, tal como los definiste en el array).
entonces le pones por ejemplo:
Código: [Seleccionar]
NuevoPersonaje = 3 //para que cambie a obj_nora
después en el Step de tu personaje ponle:
Código: [Seleccionar]
var inst; inst = instance_place(x, y, obj_entrada)
if inst != noone {
instance_change(global.controlList[inst.NuevoPersonaje],false)
}

Eso te cambiará de personaje cada vez que toques el "obj_entrada".
Te colocará el personaje que hayas asignado en la variable de creación en la room del "obj_entrada"

Saludos