1
00:00:01,530 --> 00:00:07,500
Un pequeño detalle que vamos a corregir ahora son los valores extremos.

2
00:00:08,280 --> 00:00:14,580
Este 15 lo hemos determinado, entre otras, porque lo hemos probado en la pantalla.

3
00:00:16,200 --> 00:00:21,810
Pero a lo mejor probando en otro dispositivo o probando en alguna otra configuración no tienen que ser

4
00:00:21,810 --> 00:00:22,680
15 y menos 15.

5
00:00:22,680 --> 00:00:26,340
Tienen que ser 18 y menos 18 o 65 y 65.

6
00:00:27,180 --> 00:00:27,810
Qué se os ocurre?

7
00:00:27,820 --> 00:00:32,670
Qué puedo hacer para intentar paliar este problema de tenerlo escrito a piñón en medio del código?

8
00:00:38,420 --> 00:00:46,080
Poner una variable, acordaros o dicho cualquier valor que haya en medio del código es una muy mala

9
00:00:46,080 --> 00:00:46,800
práctica.

10
00:00:47,280 --> 00:00:52,500
Este 15 y menos 15 que sean valores escritos a piñón en medio del código es muy malo.

11
00:00:53,550 --> 00:00:58,940
Es tan malo que de hecho voy a venir aquí arriba y lo primero que voy a hacer es añadir un públic float.

12
00:00:59,100 --> 00:01:00,480
Cómo llamaríamos a la variable?

13
00:01:00,870 --> 00:01:04,200
Como es el rango de valores permitido en el eje de las X?

14
00:01:04,650 --> 00:01:09,450
Un buen nombre es X ranjit, el rango en el eje de las X.

15
00:01:10,240 --> 00:01:16,480
Entonces el rango en el eje de las X va a ser igual a 15 punto cero f.

16
00:01:19,460 --> 00:01:22,320
Y este va a ser el valor que se va a utilizar dentro del Código.

17
00:01:22,710 --> 00:01:28,020
El día de mañana exportamos a un móvil que es más grande, es el 15 por 18, por 20.

18
00:01:28,530 --> 00:01:31,340
Es a un móvil de abuela de 300 píxeles de ancho.

19
00:01:31,390 --> 00:01:33,440
Puedes cambiáis esto por un menos 1 1.

20
00:01:34,580 --> 00:01:35,550
El rango disponible.

21
00:01:36,900 --> 00:01:43,410
A ver, también podríais hacer una cosa más rocambolesca, que es que el mínimo de la X y el máximo

22
00:01:43,410 --> 00:01:50,010
de la X no fuera el mismo número porque la cámara no está en medio, en cuyo caso necesitaría dos valores

23
00:01:50,170 --> 00:01:51,980
la X mínima y la X máxima.

24
00:01:52,980 --> 00:02:00,240
No lo haríamos con dos variables, sino que lo haríamos con un vector 2 y este vector 2.

25
00:02:00,300 --> 00:02:03,090
No, la agois sería ni un vector 2.

26
00:02:03,440 --> 00:02:07,680
Pues imagínate, el mínimo está en menos 15 y el máximo está en 10.

27
00:02:07,720 --> 00:02:08,060
Por qué?

28
00:02:08,150 --> 00:02:09,690
Porque no he puesto la cámara centrada.

29
00:02:09,960 --> 00:02:12,290
Esta sería la forma de hacerlo correcto.

30
00:02:12,740 --> 00:02:17,190
Y ahora el vector X Rains tendría dos valores.

31
00:02:17,450 --> 00:02:20,400
En X Rains podría consultarle la X y la veis?

32
00:02:21,040 --> 00:02:28,080
Si, pero esto ya os digo, esto es, si quisierais aglutinar o no en una variable float, sino en un

33
00:02:28,080 --> 00:02:29,530
vector de dos coordenadas.

34
00:02:30,480 --> 00:02:33,270
Vale, lo digo porque siempre hay alguno que se le ocurren estas cosas.

35
00:02:33,660 --> 00:02:36,750
Si habéis puesto la cámara en el centro, todo esto no hace falta.

36
00:02:37,170 --> 00:02:39,000
Basta que sea un único número, un float.

37
00:02:39,870 --> 00:02:43,950
Aquí le damos el valor 15 y ya está.

38
00:02:44,970 --> 00:02:50,310
Pero que sepáis que si no fuera uniforme o quisierais un valor en la X y otro si no me quereis dos variables,

39
00:02:50,310 --> 00:02:55,080
crear un vector que las aglutine será el punto X, el otro punto o lo que sea.

40
00:02:55,590 --> 00:03:01,540
Vale, entonces en este caso es relativamente sencillo porque sólo tenéis que bajar aquí al código y

41
00:03:01,560 --> 00:03:02,670
donde había un 15.

42
00:03:03,090 --> 00:03:06,840
De hecho, menos 15 ponéis x rains.

43
00:03:09,190 --> 00:03:18,610
Menos Reintsch y donde había un 15 ponéis X Ranks X y X Rains aquí abajo ya lo tenéis.

44
00:03:18,640 --> 00:03:23,470
parametrizada y de hecho, para que podáis probar basta que guardáis.

45
00:03:24,100 --> 00:03:26,370
Nos vamos al editor de Unity y le damos al play.

46
00:03:30,210 --> 00:03:32,550
En teoría se había puesto el mismo número de antes.

47
00:03:32,920 --> 00:03:36,870
Sostiene que mover igual hasta al menos 15 15.

48
00:03:37,530 --> 00:03:45,630
Pero ahora la ventaja es que si te vas al jugador y dices que el X Reigns no es 15, sino que es 8.

49
00:03:47,390 --> 00:03:49,460
Fijaros hasta dónde se mueve el granjero.

50
00:03:51,540 --> 00:03:52,790
Le habéis reducido el cambio.

51
00:03:53,480 --> 00:03:58,220
Sin embargo, si no lo ponéis con una variable, luego es un coñazo detectar en el código dónde hay

52
00:03:58,220 --> 00:03:59,330
que cambiar una cosa u otra.

53
00:03:59,330 --> 00:04:03,890
Es muy pesado encontrarlo, mientras que con una variables es gratis.

54
00:04:04,220 --> 00:04:08,270
Vienes aquí, cambias el valor, juegas con ello y listo.

55
00:04:13,020 --> 00:04:18,430
Por lo tanto, fijaros, ya podéis mover al personaje a izquierdas y derechas basándose en las flechas

56
00:04:18,820 --> 00:04:21,670
o en la isla de recordad que se utiliza el axis horizontal.

57
00:04:22,060 --> 00:04:27,970
Tanto vale las flechas como la águila y el jugador ya no se nos escapa de la pantalla.

58
00:04:28,480 --> 00:04:33,940
Y sobre todo, habéis visto que para que la escala sea la adecuada he tenido que aumentar, por ejemplo,

59
00:04:33,940 --> 00:04:35,450
el tamaño de la pizza, que era muy pequeña.

60
00:04:36,000 --> 00:04:40,450
Entonces hemos podido jugar un poco con los factores de escala, aunque ya os digo que no es lo más

61
00:04:40,450 --> 00:04:46,070
normal jugar con ellos, porque aquí, de hecho se debería apreciar un poco.

62
00:04:46,090 --> 00:04:53,410
Si ves que la pizza no sé si se ve, si aparece con los bordes cerrados, vale, esto ya es indicativo

63
00:04:53,410 --> 00:04:56,140
de aliasing y es muy malo todo lo que se escala.

64
00:04:56,140 --> 00:05:02,110
En general es capaz de crear unos artefactos extraños que realmente no están ahí, pero que el propio

65
00:05:02,110 --> 00:05:05,830
proceso de escalado por la técnica que utiliza los crea artificialmente.

66
00:05:06,400 --> 00:05:08,110
El efecto más bestia es este de aquí.

67
00:05:09,160 --> 00:05:09,560
A ver

68
00:05:12,820 --> 00:05:13,270
si.

69
00:05:22,300 --> 00:05:23,770
A ver si somos capaces de verlo.

70
00:05:28,050 --> 00:05:33,880
Ves que este y este dan lugar a efectos diferentes en las tejas.

71
00:05:34,350 --> 00:05:36,820
No sé si se ve que esto se ve fatal.

72
00:05:41,130 --> 00:05:42,750
Aquí aquí se ve perfecta.

73
00:05:43,110 --> 00:05:43,740
En este se ve.

74
00:05:45,240 --> 00:05:53,530
Si fijaros que aquí las propias cejas se ven fatal, eran como una especie de líneas que el ojo humano

75
00:05:53,530 --> 00:05:57,790
las ve, a pesar de que la imagen real no las tiene.

76
00:05:58,180 --> 00:06:05,050
Entonces en este no han aplicado ningún filtro antialiasing y el efecto es que los propios ladrillos.

77
00:06:05,710 --> 00:06:09,280
El efecto óptico es que están alineados en forma de cruz.

78
00:06:10,330 --> 00:06:12,560
Cuando realmente tú miras aquí no hay ningún efecto.

79
00:06:13,790 --> 00:06:19,810
Entonces esto los filtros aliá antialiasing se suelen aplicar un montón para evitar este tipo de artefactos

80
00:06:19,810 --> 00:06:25,540
extraños que ocurren debido a transformaciones que básicamente son el cambio de escala o una transformada

81
00:06:25,540 --> 00:06:28,450
de Fourier o alguna cosa de estas que los genera dinámicamente.

82
00:06:30,000 --> 00:06:35,350
Entonces, teniendo en cuenta que a la hora de recrear efectos miracles se nota un montón.

83
00:06:35,860 --> 00:06:36,460
Hasta lo veréis.

84
00:06:36,460 --> 00:06:38,800
Vosotros veis que aparecen como semicírculos.

85
00:06:39,580 --> 00:06:41,620
Esos semicírculos no están ahí.

86
00:06:42,850 --> 00:06:48,280
Vosotros lo veis en la vida real y esos semicírculos o esas rayitas que tienen estos silos, eso no

87
00:06:48,280 --> 00:06:50,690
está ahí, ni siquiera es efecto de la luz.

88
00:06:50,740 --> 00:06:54,490
La luz no hace efectos de parábola porque la luz está en el infinito.

89
00:06:54,980 --> 00:06:57,520
Que esté en medio metro, más palante o patrás se la trae al pairo.

90
00:06:58,390 --> 00:07:03,490
Estos son efectos que ocurren cuando se digitaliza, cuando se transforma en pixel, se rasterización

91
00:07:03,850 --> 00:07:10,150
cualquier imagen, cualquier efecto visual y se acentúa muchísimo con los escalados o con las transformaciones

92
00:07:10,150 --> 00:07:11,320
no lineales en particular.

93
00:07:11,400 --> 00:07:14,350
Aquí me he cargado la Picsi, como ha hecho Echo Zoom.

94
00:07:14,870 --> 00:07:19,750
Ves que el propio cuadradito este que define el peperoni o lo que sea, tiene un borde cerrado.

95
00:07:20,620 --> 00:07:24,340
Eso es lo que produce un aliasing cuando escalas un objeto.

96
00:07:24,700 --> 00:07:28,870
Por eso es importante que os pongáis de acuerdo con el artista que tiene que hacer el gráfico para que

97
00:07:28,960 --> 00:07:30,680
os lo desde la dimensión correcta.

98
00:07:30,970 --> 00:07:34,000
Porque si la dimensión no es la correcta, vais a experimentar esto.

99
00:07:34,300 --> 00:07:41,920
Originalmente la imagen era así, donde el efecto de aliasing es mucho menos notable que a medida que

100
00:07:41,920 --> 00:07:42,680
escala es.

101
00:07:42,990 --> 00:07:51,480
De hecho, cuando veis a escala que escala o por Dios escala el suelo, de hecho no se que hecho.

102
00:07:53,600 --> 00:08:03,170
Si la pizza lo que quería escalar 1 1 y ahora esto sería la pizza tamaño original, que el borde cerrado

103
00:08:03,170 --> 00:08:05,990
se nota un pelín ya porque es un efecto pixelado.

104
00:08:06,020 --> 00:08:09,500
Pero cuando hago zoom, que no se nota tanto porque el tamaño original.

105
00:08:09,800 --> 00:08:16,010
Sin embargo, a la que esto ya no es del tamaño adecuado, esto ya es de un tamaño totalmente diferente.

106
00:08:16,140 --> 00:08:22,640
Lo incrementado incrementa considerablemente las posibilidades del aliasing.

107
00:08:23,540 --> 00:08:26,430
Vale, vale, perfecto.

108
00:08:27,590 --> 00:08:31,310
Incluso hay una última cosa que podríais hacer.

109
00:08:31,790 --> 00:08:38,630
No lo haremos ahora, pero a la que empezáis a notar que vuestro código se repite sospechosamente.

110
00:08:39,670 --> 00:08:47,210
Vale, cuando tenés que escribir lo mismo dos veces o tres veces, significa que aquí hay potencial

111
00:08:47,210 --> 00:08:54,200
fuente de errores y que si este código estuviera mal, el otro que se parece sospechosamente también

112
00:08:54,200 --> 00:08:54,660
vas tan mal.

113
00:08:56,430 --> 00:09:04,290
Entonces, muchas veces lo que solemos hacer es encapsular, aglutinar todo el comportamiento que se

114
00:09:04,290 --> 00:09:09,990
parece el uno y el otro en una función que se pueda encargar de ello y que repita el código, o sea

115
00:09:10,100 --> 00:09:14,300
que el código está repetido, esté solo en un lugar y llamemos a una función o a otra.

116
00:09:14,840 --> 00:09:15,960
Eso lo haremos más adelante.

117
00:09:15,990 --> 00:09:21,420
Ya sé que vosotros lo habéis visto en el otro curso, pero lo haremos más adelante que cuando necesitemos

118
00:09:21,420 --> 00:09:24,810
repetir lo mismo una vez o dos, o tres o cincuenta.

119
00:09:25,230 --> 00:09:32,190
Es mejor ese código repetido que esté en otra función separada, que esté en un phablet.

120
00:09:32,250 --> 00:09:33,000
No lo copiamos.

121
00:09:33,190 --> 00:09:36,630
Public Bobbit Checking bounds.

122
00:09:38,650 --> 00:09:45,030
Que compruebe si está dentro de los márgenes y fijaros que es lo único que cambia de aquí, aquí el

123
00:09:45,030 --> 00:09:48,250
signo del signo es uno menos uno.

124
00:09:48,870 --> 00:09:56,430
Entonces yo aquí le pongo sin signo, me llevo toda esta cosa aquí dentro.

125
00:09:57,500 --> 00:10:00,410
Lo que multiplica por uno o por menos uno es esta cosa que tengo aquí.

126
00:10:00,410 --> 00:10:00,810
Correcto.

127
00:10:01,590 --> 00:10:07,260
Entonces lo único que hago es multiplico xauen por X Rains aquí y por X Rains aquí abajo.

128
00:10:07,770 --> 00:10:15,450
El resultado en lugar de hacer dos llamadas, me basta hacer dos líneas checking bounds con el signo

129
00:10:15,450 --> 00:10:21,330
1 para chequear a derechas, checking bounds con el signo menos 1 para chequear la izquierda.

130
00:10:21,950 --> 00:10:28,860
Entonces fijaros que el gordo ya solo lo hago en un lado y lo que hago es llamar a las funciones con

131
00:10:28,860 --> 00:10:32,990
el signo en 1 o menos 1 para que se encargue de multiplicarlo por el X20.

132
00:10:33,140 --> 00:10:39,420
Ya os digo, no lo hagáis ahora, no lo hagáis, pero la idea es que siempre que veáis que en algún

133
00:10:39,420 --> 00:10:47,640
sitio hay posibilidades de reutilizar vuestro código, es mucho mejor crear una función y que esa función

134
00:10:47,640 --> 00:10:51,450
sea la que se encargue de juntar la lógica.

135
00:10:51,990 --> 00:10:57,630
Esto significa que ganáis en abstracción, ganáis en abstracción porque tenéis un proceso más abstracto

136
00:10:57,630 --> 00:10:59,500
que es capaz de realizar una única función.

137
00:10:59,520 --> 00:11:02,790
Esta función tiene derecha e izquierda implementado.

138
00:11:04,110 --> 00:11:07,920
La otra es más concreta porque las dos otras las tenía por aquí.

139
00:11:08,490 --> 00:11:13,920
Estas dos son la izquierda en un lado y la derecha en otro, y de hecho hasta lo podéis documentar izquierdas,

140
00:11:13,920 --> 00:11:15,000
una derechas la otra.

141
00:11:15,440 --> 00:11:19,400
Al ganar en abstracción, pues perdéis lo que era tan concreto.

142
00:11:19,410 --> 00:11:25,010
Perdáis la noción de izquierdas o derechas y eso lo tiene que ganar la variable que entra por parametro

143
00:11:25,370 --> 00:11:27,240
y esto poco a poco lo iremos practicando.

144
00:11:27,770 --> 00:11:32,820
Pero como para algunos es la primera vez que programas y demás, de momento lo podemos dejar así y lo

145
00:11:32,820 --> 00:11:33,780
que mejor funciona?

146
00:11:34,520 --> 00:11:39,930
Vale, pues básicamente sólo tenemos el movimiento del granjero.

147
00:11:40,050 --> 00:11:44,310
Vamos a implementar la siguiente mecánica, que es la de tirarle comida a los animales.

148
00:11:44,370 --> 00:11:48,720
Hay que darle de comer, les vamos a tirar un cacho de pizza de que se coman en el caso de pizza a la

149
00:11:48,720 --> 00:11:50,250
vaca, el perro y demás.
