Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda sobre hacer varios items con la misma base

Iniciado por Rogorog, Febrero 06, 2017, 10:01:58 AM

Tema anterior - Siguiente tema
Muy buenas a todos.
 
Tengo alguna duda relacionada con cómo crear enemigos u objetos en un juego RPG. Actualmente estoy haciendo un gameObject por elemento.
 
Por ejemplo, si quiero tener 3 enemigos diferentes, hago un prefab con un enemigo completo, con su script de movimiento/acciones y otro script de estadísticas (con variables como vida, daño, etc...). Si quiero tener otro tipo de enemigo, creo otro prefab igual, con los mismos scripts, pero cambiando los valores de estadísticas y el sprite. Con los objetos igual.
 
¿Es esta una forma correcta de hacerlo? ¿Es mejor hacerlo de otra forma (por ejemplo con Arrays)? Creo que tener tantos prefabs tan parecidos puede no ser lo óptimo.
 
Muchas gracias a todos.

Buenas.
 
En principio para lo que dices con un solo prefab tendría que ser suficiente. Para cada tipo de enemigo, tras arrastrar el prefab a la escena, cambias los valores que quieras en el inspector y ya está. Si lo que quieres evitar es tener que poner los mismos valores cada vez que quieres hacer un enemigo del mismo tipo, entonces yo lo que haría es por ejemplo crearme una enum 'tipoEnemigo' y hacer que desde el inspector sólo tengas que especificar este valor tras arrastrar el prefab a la escena. Luego en el código del script según el tipoEnemigo setteas los valores de las demás variables.
 
Con esto lo único que veo poco claro es el tema de cambiar la textura. Este cambio de textura no tendría que implicar modificar el material sino que el material tendría que tener una textura atlas y luego desde script sólo modificar el offset según tipoEnemigo.
 
No sé, es una manera de enfocarlo, a ver si alguien te da otras soluciones.

Febrero 06, 2017, 06:55:40 PM #2 Ultima modificación: Febrero 06, 2017, 06:59:40 PM por ytinU
Al tema de tener prefabs parecidos no puede ser óptimo, creo que no afecta.. si tu juego requiere usar esos prefabs pues ponlos, me parece que lo mismo pasa con algunos juegos, osea que en un juego online donde puedas subir de nivel y este automaticamente te suba algunos atributos son prefabs pero se les sube o resta atributos(dano,vida,atack,etc..).Si quieres hacerlo más óptimo lo que yo haria es crear un clase enemigo donde el constructor reciba vida, dano, attack, sprite(nombre), etc..  y en otro script crear una lista enemigo asi puedes jugar con los valores en el inspector.
 
Eso es lo que pienso, a lo mejor existe una forma más sencilla y óptima, espero que sirva :)

Hola, Ya con lo que te dijeron arriba supongo que tenes una idear de como hacerlo. Si lo que preguntas es si es la forma "correcta" de hacerlo ya depende de otras cosas, una muy importante es el alcance que tiene tu rpg. A mi en lo personal, aunque sean pocos tipos de enemigos me gusta plantear sistemas que algun dia se puedan expander a mucha cantidad de ellos. Una cosa, cuando decis que pones un prefab y despues lo modificas, me imagino que luego guardas los nuevos prefabs, esta bien si tenes enemigos bien definidos y los queres repetir por todos lados, pero si queres un poco mas de aleatoriedad tenes que tener algun que otro enfoque.
 
En mi caso lo que haria es crear una herramienta del editor para hacer personajes o enemigos en general si tuviera que hacer un rpg. En donde pondria de entrada por ejemplo raza o clase(determinar sprite) , nivel(plus general de habilidades) y variante(desviacion +- de valores), entonces una vez que le doy a "Crear" se crea un gameObject con los datos ya determinados, quiza con alguna opcion de crear 20 enemigos con cierta variante de salud, ataque, nivel, etc.
 
Por eso, lo  de solucion correcta es medio agarrado de los pelos.Eso si, agarra papel y lapiz, y anota cada uno de las caractericticas de cada enemigo y/o personaje, o NPC, una vez hecho esto ya podes tenes en claro que metodo se ajusta mas a tu situacion.
 
 

Muchas gracias a todos por las respuestas, me queda bastante más claro ahora :)

Etiquetas: