Unity Tanque para FPS
Tanque con seguimiento para proyecto FPS. Se gira mediante Quaternion.Slerp
Escena Unity Ballena en bosque
Inspirado en un póster llamado Whale in forest, he creado esta escena en Unity, utilizando un terrain , colocando árboles, agua , la ballena y metiendo efectos de postproducción.
Recreando iVisual , Escuela de nuevas tecnologías de Valladolid en Unity
Primero se tomaron fotos de referencia.
Después, se recrea la geometría base utilizando Probuilder, el cual nos permite modelar dentro de Unity, colocamos un FPS Controller para movernos por el escenario, en esta fase es fundamental corregir escalas, probar q el personaje se mueve con soltura sin estar demasiado “apretado”, también se colocan cubos simples con los objetos base, que seran convertidos en Prefabs para ser sustituidos después.
Colocamos materiales con texturas, Probuilder va creando las UVs por lo que simplemente seleccionado caras podemos asignar los materiales. También colocamos los primeros modelos.
En este proyecto las luces se apagan y encienden en tiempo de juego, por lo que las pusimos mixed, hay q tener en cuenta que al añadir el postprocesing todo se volverá algo más oscuro.
Las bombillas llevan un material de emisión que se puede desactivar por código, Material.DisableKeyword(“_EMISSION”);
Finalmente añadimos los efectos de postproducción con Postprocesing v2, en esta versión podemos controlar diferentes postprocesing mediante volumen de forma que podemos tener un postprocesing en el pasillo y otro distinto en una habitación.
El efecto Bloom pertime que los materiales emisión se vean más suavizados y con un halo.
La corrección de color, colocamos todo el color en ACES el modo más fílmico y ajustamos la exposición, contraste etc.
Con Screenspace añadimos reflejos en el suelo en aquellos materiales que tienen algo de reflexión.
También metimos reflexion probes para controlar los reflejos del Ironman , los cuadros y las manillas de las puertas.
Unity luces: Recreando Cesta de pan, de Salvador Dalí
Inspirado en el cuadro de Dalí, Cesta de pan, recreo la composición y las luces en Unity, utilizo un spot light para iluminación base y area lights para marcar zonas de brillo, finalmente subo el contraste con postprocesing.
Modelos usados :
Mesa:
https://sketchfab.com/models/e9ef3eadee9d4491b7c59fdbb19c30cd
Cesta de pan:
https://sketchfab.com/models/bb7e9cf4496f420c8d825d2e507f124b
Pan:
https://sketchfab.com/models/35c647c3231b4d7ba3dfdc1d0ba4d036
Despistados nivel 1 videojuego desarrollado con Unity
Aún le quedan cosas que matizar, como los sonidos y algunos menús, pero la funcionalidad del videojuego está completada.
Despistados es un videojuego desarrollado con Unity , donde el jugador deberá conseguir salvar al mayor número de Despistados frente a los peligros de la ciudad.
Despistados portada desarrollada en Unity
Portada del videojuego Despistados, he utilizado la nueva herramienta integrada en Unity Textmeshpro , q ahora viene para descargarse dentro del sistema de paquetes, con ella se puede crear un text con más opciones de formateo, me ha parecido especialmente interesante la opción de poder darle una textura al color, en la imagen casi no se aprecia pero hay una textura de cartón junto con el color rojo.
Unity Destruir después de hacer animación
Supongamos que queremos crear un animación en un GameObject que tras ejecutarse se destruya asimismo, tendriamos varias opciones la mas sencilla es contar el tiempo en segundos y simplemente usar la funcion Destroy(gameObject,segundos_animacion); si embargo este codigo requiere ajustes y no es universal.
El codigo para que un GameObject se destruya tras ejecutar una animación seria:
public class Destruye : MonoBehaviour {
Animator animator;
float tiempo;
void Awake(){
animator = GetComponent
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//Que la animación coincida con el tiempo
if (animator.GetCurrentAnimatorClipInfo(0).Length != 0)
{
AnimatorClipInfo[] AuxClipInfo = animator.GetCurrentAnimatorClipInfo(0);
tiempo = animator.GetCurrentAnimatorStateInfo(0).normalizedTime * AuxClipInfo[0].clip.length;
if (tiempo > AuxClipInfo[0].clip.length)
{
print (tiempo + " " + AuxClipInfo [0].clip.length);
Destroy (gameObject);
}
}
}
}
Tendremos que asignarlo al GameObject que tenga el Animator y ademas quitar el loop de la animación, este código es universal, ya que recoje el tiempo que dura el clip y lo compara con ese tiempo multiplicado por el tiempo normalizado es decir, en base 1, funcionando como un porcentaje .
Cuando tiempo sea mayor que la duración del clip, es un poco mayor por la multiplicación y el numero de decimales, destruye el gameObject que lleva este script asociado.
Respecto al 0 de animator.GetCurrentAnimatorClipInfo(0); se trata del LayerAnimation que si no hemos creado ninguno mas sera la Base Layer y por tanto valdrá 0.
Despistados , videojuego 2d en Unity
Desarrollando un nuevo videojuego 2D con Unity , Despistados, basado en la idea de andar mirando el móvil, totalmente ajeno a los peligros de la ciudad.
Unity script saber si un número es par o impar
Un script muy sencillo de c# que pongo de ejemplo para usar el operador % modulo , y comprobar su utilidad, el cual devuelve el resto de una división.
Ya que el resto de la división de un numero par entre dos es siempre 0
public int numero;
if(numero%2=0){
print(numero+" es par");
}else{
print(numero+" es impar");
}
Demo de ¿Donde está Lupo?
Se trata de un videojuego sencillo, basado en la realidad de tener un gato y no saber por dónde anda, así q la pregunta ¿Donde está Lupo? Surge cada día.
De este hecho cotidiano decidí darle una vuelta para crear un videojuego pensado para el aprendizaje de idiomas, ya que recuerdo que el tema de las localizaciones me daba quebraderos de cabeza en inglés.
Como últimamente he estado diseñando en pixel art, deci hacerlo con un estilo parecido a las aventuras gráficas tipo Lucas Arts.
El proyecto está en desarrollo, pero ya es funcional.
Si os interesa saber más sobre ¿Donde está Lupo? Dejarme un comentario.