Soluciones para cada Reto de Unity de Febrero 2024

Soluciones para cada Reto de Unity de Febrero 2024

María Santos María Santos
6 minutos

Leer el artículo
Audio generated by DropInBlog's Blog Voice AI™ may have slight pronunciation nuances. Learn more

Reto 01 (04 / 02 / 2024)

Enunciado

El primer reto del mes consiste en crear una función para controlar el volumen de una componente AudioSource mediante un Slider

Solución

Necesitamos manipular la propiedad volume de una componente AudioSource, por tanto, necesitamos una variable de tipo AudioSource que guarde la referencia de la componente que queremos modificar.

Como se trata de una función para un Slider, ésta tiene que ser pública y no devolver ningún output. Además, como queremos que el volumen dependa del valor del Slider, necesitamos que la función tenga un parámetro de tipo float.

Finalmente, la función asigna el valor del parámetro a la propiedad volume de la componente AudioSource cuya referencia tenemos en la variable de tipo AudioSource.

using UnityEngine;

public class UIManager : MonoBehaviour
{
    [SerializeField] private AudioSource audioSource;
    
    public void SetVolume(float value)
    {
        audioSource.volume = value;
    }
}

En el editor, cuando añadas la función a la componente Slider, asegúrate de elegir la función del submenú Dynamic float.

Reto 02 (11 / 02 / 2024)

Enunciado

Crea una función para controlar la escala de un Game Object que mantiene la proporción mediante un Slider

Solución

Necesitamos manipular la escala de un Game object, por lo que necesitamos una variable de tipo Transform que guarde la referencia de la componente Transform del Game Object cuya escala queremos modificar.

Al tratarse de una función para un Slider, tiene que ser pública y no debe devolver ningún output. Y como queremos que el factor de escala dependa del valor del Slider, necesitamos que la función reciba un parámetro de tipo float.

Para acabar, la función modifica la propiedad localScale de la variable de tipo Transform. El valor que le asigna es el vector Vector3.one multiplicado por el factor de escala que recibe por parámetro.

using UnityEngine;

public class UIManager : MonoBehaviour
{
    [SerializeField] private Transform playerTransform;
    
    public void SetScale(float value)
    {
        playerTransform.localScale = value * Vector3.one;
    }
}

En el editor, cuando añadas la función a la componente Slider, asegúrate de elegir la función del submenú Dynamic float.

Además, para este reto, recuerda modificar el valor mínimo a un valor superior a 0 (no existen la escala 0 o las escalas negativas) y el valor máximo a un valor que no haga que tu Game Object deje de caber en la pantalla de juego (no queremos que el Game Object ocupe toda la pantalla).

Reto 03 (18 / 02 / 2024)

Enunciado

Crea una función para aumentar la escala de un GameObject que mantiene la proporción mediante un botón

Solución

En este caso, volvemos a necesitar manipular la escala de un Game object. Como en el reto anterior, necesitamos una variable de tipo Transform que guarde la referencia a la componente Transform del Game Object cuya escala queremos modificar.

Al tratarse de una función para un botón, tiene que ser pública y no debe devolver ningún output. En este caso, haremos que la función no reciba ningún parámetro, pues el factor de escala lo tendremos guardado en una variable privada global a la que hemos llamado scaleFactor.

Para acabar, la función modifica la propiedad localScale de la componente Transform del Game Object. Lo que queremos es que la escala aumente cada vez que llamamos a la función. Por tanto, lo que tenemos que hacer es tomar el valor de la escala actual y sumarle el vector Vector3.one multiplicado por el factor de escala que tenemos guardado en la variable scaleFactor.

using UnityEngine;

public class UIManager : MonoBehaviour
{
    private float scaleFactor = 0.5f;
    [SerializeField] private Transform playerTransform;
    
    public void IncreaseScale()
    {
        playerTransform.localScale += scaleFactor * Vector3.one;
    }
}

Reto 04 (25 / 02 / 2024)

Enunciado

Crea una función para controlar el estado de Interactable de una componente Button mediante un Toggle

Solución

En este reto necesitamos una variable de tipo Button que guarde la referencia al botón cuyo estado queremos modificar. En concreto, queremos manipular la propiedad interactable de la componente Button. Por tanto, necesitamos una variable de tipo Button que guarde la referencia a la componente Button de nuestro botón.

Para poder utilizar la clase Button, necesitamos importar el namespace UnityEngine.UI mediante la línea de código using UnityEngine.UI;

Al tratarse de una función para un Toggle, tiene que ser pública y no debe devolver ningún output. Además, como queremos que el estado de la propiedad interactable dependa del valor del Toggle, necesitamos que la función reciba un parámetro de tipo bool.

Para acabar, la función modifica la propiedad interactable de la variable de tipo Button de nuestro botón. El valor que le asigna es el valor booleano que recibe por parámetro.

using UnityEngine;
using UnityEngine.UI;

public class UIManager : MonoBehaviour
{
    [SerializeField] private Button button;
    
    public void SetButtonInteractable(bool check)
    {
        button.interactable = check;
    }
}

En el editor, cuando añadas la función a la componente Toggle, asegúrate de elegir la función del submenú Dynamic float.

Comparte tus Soluciones

¿Has conseguido resolver todos los retos? ¿Has encontrado una solución diferente a las propuestas? Pues no dudes en compartir esas soluciones con nosotros. Puedes hacerlo comentando este mismo post o respondiendo a cualquier publicación de nuestras redes sociales.

¡Anímate!

Aprende Unity con Frogames

¿Se te ha complicado algún reto? ¿No sabes exactamente cómo enfocar la solución? ¿No acabas de entender alguna línea de código de las soluciones propuestas?

Si quieres ser capaz de resolver todos estos retos, quieres iniciarte en el mundo del desarrollo de videojuegos con Unity o bien quieres mejorar tus habilidades en este mundillo, entonces visita la Ruta de Desarrollo de Videojuegos donde tenemos toda una parte dedicada al desarrollo de videojuegos con Unity.

En cada curso aprenderás a desarrollar nuevas mecánicas y diferentes tipos de videojuegos. Hay un poco de todo: videojuegos 2D, videojuegos 3D, juegos en primera persona, juegos en tercera persona, shooters, RPGs, clásicos retro...

Además, al inscribirte a alguno de nuestros cursos tendrás acceso a la comunidad de videojuegos para hacernos cualquier duda que te surja durante tu aprendizaje y, sobre todo, para compartir con nosotros y el resto de estudiantes tus avances y tus proyectos.

¿Te lo vas a perder? ¡Nos vemos en clase!

« Volver al Blog

Obtener mi regalo ahora