Caja super mario Bros

 public GameObject objetoAReemplazar;  // El objeto a reemplazar
    public GameObject nuevoObjeto;        // El objeto que reemplazará al anterior
    public bool destruirObjetoColisionado;
    public GameObject objetoExpulsion;
    public float fuerzaExpulsion = 10f;
    public float tiempoVolverPosicion = 2f;

    private Vector3 posicionOriginal;
  

    private void Start()
    {
        posicionOriginal = transform.position;
     
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            Vector3 posicionActual = objetoAReemplazar.transform.position; // Guardamos la posición actual del objeto a reemplazar
            Destroy(objetoAReemplazar); // Destruimos el objeto a reemplazar

            // Instanciamos el nuevo objeto en la misma posición que el anterior
            GameObject nuevo = Instantiate(nuevoObjeto, posicionActual, Quaternion.identity);

            if (destruirObjetoColisionado) // Si se debe destruir el objeto colisionado
            {
                Destroy(collision.gameObject); // Destruimos el objeto colisionado
            }
            CambiarObjeto();
            MoverObjeto();
            ExpulsarObjeto();
        }
    }

    private void CambiarObjeto()
    {
        gameObject.SetActive(false);
      
    }

    private void MoverObjeto()
    {
        transform.position += Vector3.up * 0.5f;
        Invoke("VolverPosicion", tiempoVolverPosicion);
    }

    private void VolverPosicion()
    {
        transform.position = posicionOriginal;
    }

    private void ExpulsarObjeto()
    {
        GameObject objetoExpulsado = Instantiate(objetoExpulsion, transform.position, Quaternion.identity);
        objetoExpulsado.GetComponent<Rigidbody2D>().AddForce(Vector2.up * fuerzaExpulsion, ForceMode2D.Impulse);
     
    }
}

Este es un script de Unity 2D que se utiliza para manejar la colisión de objetos en un juego. Básicamente, lo que hace es que cuando un objeto colisiona con otro objeto que tenga el tag «Player», el script reemplaza el objeto de juego que tiene asignado el objetoAReemplazar con otro objeto llamado nuevoObjeto.

Además, también hay algunas opciones configurables como si se debe destruir el objeto que colisionó con el objetoAReemplazar, si se debe destruir el objeto que se expulsa después de la colisión, la fuerza de la expulsión, y el tiempo que tarda el objeto en volver a su posición original después de ser movido.

La función Start() inicializa la posición original del objeto antes de que se mueva, mientras que la función OnCollisionEnter2D() se llama cuando el objeto colisiona con otro objeto. En esta función, se verifica si el objeto colisionado tiene la etiqueta «Player». Si es así, se reemplaza el objetoAReemplazar con un nuevo objeto, se destruye el objeto colisionado si se configuró así y se realizan algunas acciones adicionales como cambiar el objeto activo, mover el objeto, volver el objeto a su posición original y expulsar un objeto después de la colisión.

En general, este script se utiliza para crear efectos de colisión interesantes y dar una sensación más realista a los objetos del juego.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *