El personaje y el controlador

1

Introducción: De la idea al desarrollo

2

Estructura de carpetas en Unity

3

Assets, Game Objects y Sprite Atlas

4

Animaciones desde un sprite map

5

Animation Controller y Transiciones

6

Plataformas y gravedad

7

Física en Unity

8

El script de control

9

Programando funciones en C# y Unity: Jump

10

Detectar el suelo con Raycast

11

Herramientas de debugging visual

12

Cambiar las animaciones según los estados

13

Reto: Terminando nuestras animaciones

14

Solución del reto

15

Hacer que el personaje camine

El manager del videojuego

16

Cómo funciona el Game Manager

17

El Singleton

18

El modo de juego

19

Input manager y juegos multiplataforma

20

Corrección del Bug del salto

21

La zona de muerte

22

Reiniciar la partida

23

Corrigiendo los bugs al reiniciar nuestro juego

Diseño procedural de niveles 2D

24

El diseño de niveles a mano

25

Configurando nuestros assets para el diseño procedural

26

Generación procedural de niveles

27

Creando la zona que eliminará bloques del nivel excedentes

28

Añadir un nuevo bloque de forma aleatoria

29

La cámara que sigue al jugador

30

Destrucción de bloques antiguos

31

Terminando de programar la destrucción de bloques antiguos

32

Solucionando el salto de la cámara al reiniciar el juego

HUD, menús y gameplay

33

El canvas en Unity

34

Uso de botones para crear un menú

35

La lógica de los menús

36

Ejercicio: Preparando el menú del juego

37

Programando el menú del juego

38

Los coleccionables del juego

39

Actualizar UI de coleccionables

40

Iniciando con pociones y maná

41

Pociones de vida y maná

42

Programando las barras de vida y maná

43

Calculando los puntajes con la distancia y el tiempo de juego

44

La lógica del maná

Enemigos y dificultad

45

Plataformas móviles

46

Iniciar movimiento de la plataforma con trigger

47

Enemigos móviles

48

Enemigos móviles: preparando nuestro enemigo para girar

49

Enemigos móviles: programando que gire al chocar

50

Arreglando el collider de nuestra roca

51

Programando la condición de muerte del personaje

52

Añadiendo música de fondo a nuestro videojuego

53

Añadiendo efectos de sonido y cierre del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
6 Hrs
52 Min
58 Seg
Curso de C# para Videojuegos

Curso de C# para Videojuegos

Juan Gabriel Gomila

Juan Gabriel Gomila

Calculando los puntajes con la distancia y el tiempo de juego

43/53
Recursos

¿Cómo se integra la puntuación en un videojuego?

Al ver cómo los videojuegos guardan la puntuación, es fascinante darse cuenta de las múltiples maneras en que se puede implementar y calcular este sistema. La elección de la métrica adecuada, como la distancia recorrida, puede proporcionar un marco emocionante para desafiar y motivar a los jugadores. Aquí exploraremos cómo implementar este sistema utilizando Unity y cómo podemos aumentar la dificultad de juego con pequeños ajustes.

¿Qué métrica vamos a utilizar para calcular la puntuación?

Existen múltiples posibilidades para determinar la puntuación en un videojuego: el tiempo jugado, la cantidad de enemigos derrotados, o la distancia recorrida. En este caso, nos centraremos en el concepto de la distancia, pero con un enfoque simplificado, pues nos moveremos en una sola dimensión (el eje x). La idea es calcular la distancia desde un punto de inicio hasta un punto final para obtener la puntuación.

¿Cómo se calcula la distancia recorrida?

Para calcular la distancia, modificaremos el script del jugador:

public float GetTravelledDistance() {
    return transform.position.x - startPosition.x;
}

Este método calcula simplemente la diferencia en la posición x del personaje, indicando cuánto ha avanzado en nuestro juego en términos de distancia.

¿Qué es necesario considerar para una integración eficiente?

En el contexto de Unity, es importante evitar cálculos redundantes en cada actualización o frame. Por lo tanto, referenciamos de manera efectiva el PlayerController en el método Start de nuestra vista de juego:

private PlayerController controller;

void Start() {
    controller = GameObject.Find("Player").GetComponent<PlayerController>();
}

Así, accedemos directamente a la propiedad de la distancia, optimizando el rendimiento.

¿Cómo se maneja la puntuación máxima del jugador?

La persistencia de datos es crucial para guardar la puntuación máxima alcanzada por un jugador, incluso después de cerrar el juego. En Unity, PlayerPrefs es una herramienta valiosa para este propósito.

¿Cómo se actualiza la puntuación máxima en el juego?

Cada vez que el jugador muere, calcularemos si la distancia recorrida durante ese intento supera la puntuación máxima registrada hasta ahora. Si es así, actualizamos el valor almacenado como la nueva puntuación máxima:

void UpdateMaxScore() {
    float travelDistance = GetTravelledDistance();
    float previousMaxDistance = PlayerPrefs.GetFloat("MaxScore", 0);

    if (travelDistance > previousMaxDistance) {
        PlayerPrefs.SetFloat("MaxScore", travelDistance);
    }
}

Además, nos aseguramos de que nuestros datos se conservan usando un valor por defecto de cero la primera vez que se ejecuta el juego.

¿Cómo se ajusta la dificultad durante el juego?

Para mantener el interés de los jugadores, aumentar la dificultad a medida que progresan es un truco bien conocido entre los desarrolladores. Modificando el número de bloques sencillos y complicados en el manager de niveles de nuestro juego, podemos incrementar este grado de dificultad:

// Ejemplo del ajuste en el LevelManager
public void ConfigurarNiveles() {
    // Un bloque sencillo por nueve complicados
    List<Bloques> bloques = new List<Bloques>();
    bloques.Add(bloqueSencillo);

    for (int i = 0; i < 9; i++) {
        bloques.Add(bloqueComplicado);
    }
}

Este ajuste simple permite controlar el flujo del desafío presente en cada nivel, garantizando así que los jugadores puedan experimentar un juego cada vez más retador y emocionante.

Incorporar estos enfoques fortalece el diseño de cualquier videojuego, manteniendo a los jugadores comprometidos y motivados. Con dedicación y creatividad, el potencial del diseño de videojuegos es ilimitado. ¡Adelante con tus proyectos y mantiene abiertas tus puertas al aprendizaje continuo!

Aportes 10

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

A tener en cuenta.

Por motivos del enseñanza se guarda el score en el PlayerPrefs, pero como ya fue dicho, este es para guardar preferencias, mas no para guardar puntajes, ni guardar partida, entre otros. Es posible? si lo es como ya lo vieron, pero no es su propósito.

Como le hago para solo tener números enteros en el Score???
.
Intente cambiar de float a int las variables correspondientes pero me marca error por que el this.transform.position.x me da como defecto un numero float (con decimales) y Unity no convierte de int a float.

Yo convertí al PlayerController en singleton a fin de cuentas, asi evitaba inicializar la variable en cada script y me ahorre un par de lineas de código

Hola te recomiendo que si tu personaje se queda pegado con las paredes esto se debe a que el collider tiene fricción esto se puede cambiar creando un physics material 2D y agregarlo a nuestro al collider de nuestro personaje, esto se crea haciendo
click izquierdo create -> physics material 2D, luego de eso si seleccionas el physics material 2D tendrás 2 casillas con números deja las 2 casillas en 0, luego arrastre este material al collider de nuestro personaje en la casilla que dice material

MaxScore![](

ayuda!!! el MaxScore no se resetea por decirlo de alguna manera no importa si yo detengo la simulacion del juego no se borra el valor maximo que tiene por ejemplo le doy al simulador play comienza el juego normal, marca el score normal y guarda el maximo score pero le doy detener a la simulacion y despues le doy otra vez play no comienza en 0 el MaxScore sino que me guarda el valor maximo de anteriores partidas D=

pues guardó el score la primera pero no se la sumo la segunda vez

Como nuestro juego se mueve en una sola dimensión (horizontal). Para calcular la distancia recorrida por el jugador:
Calculamos el punto de inicio para saber el punto de fin.

La puntuación máxima la vamos a persistir en disco (fichero) - Player prebs.

Excelente clase!