Home | Clases | Unity: Plataformas en 3D | Receta 2: Plataformas móviles

Receta 2: Plataformas móviles


Introducción

En esta receta, trataremos de crear diferentes plataformas fijas, móviles y ocultas para el jugador de la receta 1. Puedes comprobar el objetivo final haciendo clic AQUÍ.

Creación del escenario

Partiendo de la base de la Receta 1 (aunque haciendo el suelo más grande y quitando la opción de movimiento con el ratón), vamos a crear 4 plataformas diferentes a a partir de 4 Cubes con materiales básicos con color Albedo para distinguirlas:

  • Plataforma fija a la que se accede saltando (roja).
  • Plataforma móvil tipo ascensor (verde).
  • Plataforma rotatoria (Azul).
  • Plataforma oculta (amarilla).

Además, añadiremos un Quad amarillo disparador de modo que al pasar por encima de él, aparezca la plataforma oculta. Para ello, a este Quad debemos añadirle un componente Box Collider y marcar la propiedad Is Trigger del mismo.

También es necesario añadir a las 4 plataformas la etiqueta Suelo para que el Jugador pueda saltar sobre ellas.

Recuerda que es fundamental la organización, así que vamos a crear los Materiales dentro de su propia carpeta Materiales, así como los scripts en su carpeta Scripts.

El escenario básico podría ser como el siguiente:



Una vez creado el escenario, vamos a crear diferentes scripts para las diferentes plataformas:

  • Crea el script Movil y añádelo como componente a la plataforma Movil
  • Crea el script Rotatoria y añádelo como componente a la plataforma Rotatoria
  • Crea el script Disparador y añádelo como componente al Quad Disparador


Este es el código del script Movil:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movil : MonoBehaviour {

//Velocidad de movimiento
[Range(1,10)]
public float velocidad = 3;

//Direccion del movimiento
private Vector3 direccion = Vector3.up;

//Límites de movimiento
private int limiteSuperior = 5;
private int limiteInferior = 1;

void Update () {

//Si alcanza el límite superior, dirección bajada
if (transform.position.y >= limiteSuperior){
direccion = Vector3.down;
}

//Si alcanza el límite inferior, dirección subida
if (transform.position.y <= limiteInferior){
direccion = Vector3.up;
}

//Traslada la plataforma en cada frame a la velocidad y dirección indicadas
transform.Translate(direccion * Time.deltaTime * velocidad);

}
}


Este es el código del script Rotatoria:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotatoria : MonoBehaviour {

//Velocidad de rotación
[Range(1,90)]
public float velocidad = 45;

//Direccion del movimiento
private Vector3 direccion = Vector3.up;

//Límites de rotación
private int limiteSuperior = 270;
private int limiteInferior = 90;

void Update () {

//Si alcanza el límite superior, dirección bajada
if (transform.rotation.eulerAngles.y >= limiteSuperior){
direccion = Vector3.down;
}

//Si alcanza el límite inferior, dirección subida
if (transform.rotation.eulerAngles.y <= limiteInferior){
direccion = Vector3.up;
}

//Rota la plataforma en cada frame a la velocidad y en la dirección indicadas
transform.Rotate(direccion * Time.deltaTime * velocidad);

}
}


Y este es el código del script Disparador. Recuerda añadir el objeto Oculta a la variable Oculta del script:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Disparador : MonoBehaviour {

//Declaro la variable oculta para capturar el objeto a acoultar/mostrar
public GameObject oculta;

void Start () {

//Oculto la plataforma al arrancar el juego
oculta.SetActive(false);

}

//Se ejecuta al colisionar con el objeto
void OnCollisionEnter (Collision colision){

if(colision.gameObject.name == "Jugador"){
//Muestro la plataforma
oculta.SetActive(true);
}
}

}


Con esto estaría terminada la receta, espero que te haya resultado útil.

Puedes comprobar su funcionamiento haciendo clic AQUÍ.
Fecha de publicación: 19/09/2020
Asignaturas: desarrollo de entornos interactivos multidispositivo
Temas: unity
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos