Transcripciones
1. Introducción al curso: Bien, déjame mostrarte lo que vamos a
construir en este curso. Así que este juego tiene integración de cadena de
bloques de cera, por lo que podemos iniciar sesión con
nuestra billetera ancla. Entonces voy a agarrar mi celular y escanear
ese código para poder iniciar sesión. Entonces voy a iniciar sesión. Así que eso me ha encerrado. Entonces el juego consulta mi billetera y ve
qué NFT tengo, y tengo un gato, un perro
y un ratón, NFT Y como parte del curso, te
voy a mostrar cómo
crear estos NFT Y voy a jugar
como mi ratón NFT. Entonces voy a hacer click en Mouse. Y el juego es como un juego de laberinto genial en el que corres por ahí tratando de agarrar todos
estos trozos de queso, y tienes estos monstruos blob
viniendo detrás de ti Entonces tenemos una partitura aquí. Entonces por el momento,
tenemos cero trozos de queso, y voy a dar
vueltas a ver si puedo agarrar todos los
quesos de este laberinto Y te advierto que es más difícil de lo que parece.
Vamos a intentarlo. Me va mejor
de lo que suelo hacer. Déjame ver si puedo agarrar
este queso en la esquina. No. Ahí vas. Y luego, claro,
puedes reiniciar y tener otra oportunidad y ver
hasta dónde llegas. Bien. Me interesará ver si a
alguien le va mejor que a mí, y vamos a
construir este juego.
2. Prerrequisitos: Bien, vamos a
instalar y configurar Unity. Entonces, si abres un navegador web
y vas a unity.com, y en esa página, deberías ver un botón de
descarga Entonces, da clic en el botón de
descarga. Y si solo nos desplazamos un poco
hacia abajo, deberías ver descargar
el Unity Hub. Ahora, el Unity Hub es
lo que vamos a necesitar instalar para
instalar el editor de Unity. Así que asegúrate de
descargar el para tu sistema operativo. Entonces, si estás usando una PC con Windows, luego descarga para Windows, si estás usando un Apple Mac, luego haz clic en descargar para Mac. Además de descargar eso, probablemente al mismo tiempo, es una buena idea descargar código de
Visual Studio
porque vamos a necesitarlo para editar nuestro código. Entonces si vas a code sudio.com. Y en esa página, hay
un botón de descarga. Haga clic en eso. Y si
tienes una PC con Windows, descarga el
instalador de usuario para 64. Y si estás usando una Mac, si estás usando una Mac con chip
Intel, luego haz clic en el chip Intel, y si estás usando
una Mac Apple Silicon como una computadora portátil M one
o algo así, luego haz clic en Apple Silicon. En realidad estoy usando una
Mac M one, haría clic en eso. Así que una vez que se descarguen esos dos
archivos, vaya a su carpeta de descargas, y vamos a
instalar el Unity Hub. En primer lugar,
haga doble clic en eso. Y en Mac, es solo
un caso de arrastrar y soltar eso a la carpeta de
aplicaciones, y en Windows, solo
pasarías por el proceso e instalación Una vez que hayas instalado Unity Hub, es un buen momento para
instalar también el código de Visual Studio. Así que ve a tu carpeta de descargas. Si estás en una Mac, solo
quieres agarrar esa aplicación de
código de Visual Studio y arrastrarla así a tu
carpeta de aplicaciones. Ya lo tengo instalado, así que no voy a hacer eso. Si estás en Windows, probablemente descargaste un instalador de código de
Visual Studio, así que simplemente haz doble clic en
eso e instálalo. La primera vez
que ingreses a Unity Hub, te pedirá
que inicies sesión
o crees una cuenta. Si haces clic en
crear una cuenta, serás llevado a esta pantalla aquí donde
puedes poner un correo electrónico,
contraseña, et, et, o realmente
puedes hacer
inicios de sesión sociales de esta manera Ya tengo un ID de unidad, así que entraría así y voy a iniciar sesión
con mi cuenta de Google. Bien, una vez que hayas
iniciado sesión en el Unity Hub, lo que realmente hará
es que no te llevará
a esta pantalla. Te llevará a uno, que intentarás e instalarás la última versión
soportada a largo plazo de unity. La versión LTS. Si ves LTS, ahí solo
se trata de apoyo a
largo plazo Entonces, si no quieres
hacer eso y
quieres elegir una versión
específica del editor
de Unity para Instalar, simplemente
puedes hacer clic en
Saltar en esa pantalla, y eso te llevará
esencialmente a esta pantalla de aquí, pero no tendrás instalado un editor de
unity. Y harías clic
en Instalar Editor. Y para este curso, voy a estar
usando el tipo de última versión de
la unidad que pueda porque probablemente estarás
viendo esto en el futuro. Y así 2023
ojalá esté en modo LTS, y así estará bien soportado Entonces lo que puedes hacer aquí es simplemente hacer clic en Instalar junto a la
versión que quieras. Estoy en una Mac M one, así que quiero hacer clic en esta versión de Silicon
aquí, versión Apple Silicon. Pero si estás usando
una Mac Intel, harías clic en esto. Y eventualmente
obtendrás una pantalla como esta con la
versión instalada del editor de Unity. Pero hay una
cosa extra que
encontrarás es que al
hacer clic en Instalar, obtendrás esta pantalla, la
cual te estará pidiendo instales cualquier otro módulo que quieras tener junto con el
editor unity instalado. Ahora, no te preocupes si
no marcas ninguno de estos porque
igual que yo lo hice ahí, puedes volver aquí,
haz clic en este Cog Agrega módulos, y puedes agregarlos después de haber
realizado la instalación inicial. Y estos módulos son para soportar diferentes
compilaciones de tu juego. Entonces, si quieres construir
a un teléfono Android, harías clic en el soporte de
compilación de Android, así. Si quieres construir un iPhone, entonces harías clic en
el soporte IOS Build. Ya he hecho clic en el soporte de
WebGL Build
porque por lo menos quiero poder construir
mi juego para que esté en Así que he hecho clic en
WebGL Build support aquí. Ahora, vamos a crear un nuevo proyecto. Entonces, si hacemos clic en
esta pestaña de proyecto, podemos crear un nuevo proyecto. Entonces, si hacemos clic en el botón de
nuevo proyecto aquí, Lo que se nos ocurre es en realidad todo un
montón de plantillas. Ahora bien, no importa tanto si eliges la plantilla equivocada en
este punto porque realidad la única
diferencia realmente entre todas estas plantillas diferentes es en su mayoría son los diferentes
paquetes los que están instalados. Hay algunos pedacitos
y piezas, pero en general, es razonablemente fácil
moverse entre estas
diferentes plantillas, si has empezado con una que
no es del todo adecuada para ti. Pero sólo para
pasar por esto rápidamente. Bien Estos dos de
arriba aquí, dos decoración, tres decoración están usando el tipo de unidad más antigua
construida en renderizador Y eso ha sido reemplazada con lo que ellos llaman una canalización de renderizado SRP,
scriptable Y los dos principales, dos ductos diferentes son el pipeline de renderizado universal, URP Este pipeline
solía llamarse el pipeline de
renderizado ligero, y esto es bueno para
realmente muchos casos Pero si quieres apuntar
al soporte móvil, entonces URP es probablemente el
más sensato para elegir T D URP básicamente está muy bien configurado para dos juegos D como plataformas,
cosas Tres D URP por supuesto, lo usarías
si estás haciendo un juego con tres
modelos D en un juego de tres D,
incluso como un juego de plataformas 2.5 D. Probablemente usarías tres
D URP. Este HDRP es la otra canalización
programable. Eso es común, y este es el pipeline de
renderizado de alta definición. Esto es realmente si
estás enfocado en hacer un juego solo para PC o PC
o un juego de consola, es para
plataformas de gama alta solo realmente. Entonces URP es definitivamente
una opción segura. Y HDRP si no estás
apuntando para nada al móvil, solo
quieres tener un
juego en las consolas, entonces HDRP es probablemente
lo que Así que solo para poner todo en
marcha y tener un
proyecto de prueba para comenzar, voy a elegir la plantilla de
canalización de renderizado
universal de dos D , y solo voy a llamar a
este proyecto de prueba eso. Y luego haces clic
en Crear proyecto. Así que ahora consigamos que la unidad
funcione felizmente con el código de
Visual Studio. Entonces si hacemos clic en Unity
y vamos a la configuración, y luego queremos hacer
clic en herramientas externas. Y en la parte superior aquí,
nos dirá cuál es
nuestro
editor de scripts externo en este momento,
y el mío es Visual
Studio para Mac, pero quiero usar código de Visual
Studio porque este es un editor realmente agradable que funciona igual
tanto en Mac como en Windows. Y así si elegimos código de
Visual Studio ahí
y luego cerramos eso, entonces podemos muy rápido, podemos hacer click derecho en
esta carpeta del proyecto, podemos elegir Crear script
C Sharp. Simplemente lo mantendremos nuevo comportamiento. Vamos a hacer doble clic en eso. Y si lo hemos hecho
todo correctamente, así abre el código visual studio. Si ves que esta
ventana sube por aquí, sí, podemos confiar. Bien. Los autores, sí, y solo voy
a marcar esto
también para confiar en todos los archivos. Ahora bien, cuando abras este
script en Visual Studio Code, código de
Visual Studio
te avisará y te dirá, ¿quieres instalar
este defcate de C Sharp Ahora bien, en realidad
tener ese C Sharp defcate es una muy
buena idea
porque te da mucha ayuda
con el lenguaje C Sharp No obstante, si hacemos
clic en extensiones aquí, y buscamos unidad, Y hacemos clic en la sugerencia superior y vamos a hacer
esto un poco más grande para que
veas un poco más claro. Entonces esta es en realidad una extensión suministrada por Microsoft
para ayudar con la unidad. Y en realidad dice
aquí que va a construir sobre lo que proporciona el kit
C sharp dev y las extensiones
C sharp. Entonces esto en realidad
instalará el devkit C sharp también con solo instalar esto Así que vamos a instalar esta extensión y todo lo demás debería venir con ella. Bien, una vez que esté instalado, en realidad
podemos ver
qué extensiones instaló
esa extensión de unity
adicionalmente. Si vamos a esta pestaña de
extensión aquí, borra cualquier filtro
que hayas puesto aquí y Todo el instalado
debería mostrarse en la parte superior aquí, y podemos ver que instaló la herramienta de
instalación..net, C sharp,
C Sharp déficit en telecde
para déficit de C Sharp, y la Así que tenemos mucho
instalado ahí por tan solo instalando éste. Y si volvemos a nuestro código, Ahora verás que si aquí arriba, quiero hacer una propiedad, y solo me siento un poco perezoso
y solo hago prop así, puedo golpear tabulador y va a llenar una
pequeña propiedad agradable para mí ahí. Explicaré qué
propiedades son más adelante. Pero apenas empezamos a recibir un poco
de ayuda aquí en el editor instalando
esa extensión. Nuevamente, si empiezo a
escribir instanciate, puedes ver que
nos está dando una lista desplegable ahí Muy servicial. Y
luego volví a golpear tabulador. Y me dirá que hay
bastantes métodos de instanciación diferentes a los que podemos llamar con
diferentes parámetros Así que ahora tenemos código de
Visual Studio funcionando
muy bien con unity.
3. El editor de Unity: Ahora, conozcamos un poco mejor a
Unity. Así que abramos Unity Hub, y luego hagamos clic en Nuevo proyecto. Para mantener las cosas simples
, ya que recién estamos
comenzando, crearemos un proyecto
usando la plantilla de dos DURP Y podemos ponerle nombre a
esto como queramos. Voy a
llamar simplemente a esto tutorial. Y luego haz clic en Crear proyecto. Ahora, una vez que se haya abierto la unidad, te enfrentarás a una
pantalla que se ve así. Bien. Ahora puedes cambiar el tamaño de
todos estos diferentes paneles Para que puedas personalizar la unidad para se vea exactamente como
quieres que se vea. Ahora, si haces clic en
este cuadro desplegable aquí, hay muchos
tipos diferentes de diseños. El predeterminado aquí es el que
verás inicialmente. Y el que en realidad
prefiero usar es este dos por tres uno. Y la razón por la que me gusta este diseño en particular
es que puedes ver cómo se
ve tu juego en tiempo real, lo que realmente no llegas a ver eso con
el diseño predeterminado. Tienes que seleccionar la pestaña del juego aquí para ver
cómo se ve tu juego, y eso te obliga a seguir cambiando
entre las dos pestañas. Y eso no me gusta mucho. Entonces vamos a usar
este diseño de dos por tres. Y la única otra cosa
que cambiaría con esta disposición en particular es
que tiendo a ir a Ventana, consola
general, Y luego acola esta consola dando
click en aquí y arrastrándola a esta ventana aquí Y es un poco complicado
porque quiero arrastrarlo realmente al fondo de esta ventana
de aquí. Entonces déjame hacerlo otra vez porque eso no estaba
particularmente claro. Entonces, si hago clic en ventana, haga clic en General,
haga clic en consola. Y en realidad, si lo muevo aquí
arriba, podría ser más fácil. Entonces porque no es muy útil si está
flotando por aquí, y puedes especie de expediente al
lado de la escena aquí Pero nuevamente, hay que
seguir dando click entre los dos para ver qué
pasa en la nueva consola. Y la consola
en realidad es bastante útil, sobre todo cuando
empiezas a escribir scripts porque cualquier error
se mostrará aquí, como, por alguna razón, tengo este extraño
error de asignación aquí. Realmente no
significa nada para mí. Parece una especie
de extraño error de unidad. En realidad no debería estar pasando. Pero lo que puedes
hacer es simplemente hacer clic claro y no es
quedarse ahí, así que en realidad no es un problema. Y podemos agarrar esta consola
y ponerla aquí abajo. Y así soltaremos el botón
izquierdo del ratón cuando
esté en su lugar y
tengamos nuestro layout. Y si queremos
guardar este diseño, solo
podemos hacer clic en Guardar diseño
y luego darle un nombre. Y yo sólo voy a llamar a esto. Morgan, haz clic en Guardar, y luego puedo
cambiar rápidamente entre, digamos, el diseño predeterminado
y Morgan, agradable y fácil. Entonces creo que la mejor manera de aprender la unidad es
crear realmente un juego. Entonces vamos a crear
un juego muy sencillo, y vamos a aprender la
unidad a medida que avanzamos. Probablemente el mejor lugar para
comenzar es en el panel de proyectos. Entonces aquí está nuestro panel de proyectos. Y el
panel de proyecto es solo una vista en una carpeta en tu computadora. Y podemos probar esto si
hago clic en la carpeta de activos aquí y hago revelador Finder
o en una máquina con Windows, probablemente diría
revelando el Explorador de Windows. Podemos dar click en eso y podemos ver que
en realidad abre una carpeta. Y podemos hacer doble
clic en esta carpeta de activos. Y como pueden ver, esta vista aquí es muy similar a lo que
realmente hay en nuestro disco. Es sólo una especie de versión
más amigable de
lo que hay en nuestro disco Entonces podemos hacer cosas
obvias como si queremos
mantenernos bien organizados, deberíamos crear una carpeta
donde pongamos todas nuestras cosas en. Entonces voy a hacer clic derecho y luego elegir Crear carpeta. Y voy a llamar a
esta carpeta tutorial. Y si hacemos clic derecho
sobre la carpeta tutorial, puedo crear otra carpeta. Y voy a llamar a esto escenas. Y tal vez vamos a crear
otra carpeta, y voy a llamar a esto guiones. Bien. Ahora podemos ver que estamos muy bien organizados
aquí con nuestro proyecto. Lo primero que realmente
quieres hacer es entrar en nuestra carpeta de escenas. Podemos hacer clic derecho y
podemos hacer crear escena. Podemos llamar a esto algo
sencillo como escena principal. Debido a que este juego
es un juego sencillo, sólo va a
tener una escena. Y si hago doble clic
en esa escena principal, entonces vemos que
esa escena principal se ha abierto
en la ventana jerárquica. Ahora, nuestra ventana jerárquica es una visión de lo que
hay en nuestra escena. Generalmente, nuestra escena
consistirá en
cosas como cámaras
y objetos de juego, y nos adentraremos en más
de ella a medida que avanzamos. Pero lo único
que realmente está en nuestra escena en
este momento es una cámara. Lo que puedes hacer es hacer clic en esa cámara, y puedes ver que en
nuestro panel inspector, podemos ver muchas y muchas cosas sobre esta cámara y puede parecer un
poco aterradora, pero en realidad no necesitamos saber demasiado sobre esto
en este momento. Descubriremos más a
medida que avancemos. Ahora, se puede ver que al
lado de la escena principal,
hay un astérix Y eso solo significa
que por el momento esta escena tiene
algunos cambios en, pero no se ha salvado. Entonces si alguna vez ves eso, si no
quieres perder nada, si la computadora
falla o lo que sea, entonces podrías perder algunos cambios si ahí hay
un asteryx Entonces quieres hacer Command S o archivo y guardar y
guardar esa escena. Ahora, como mencioné, esta ventana de aquí es como una vista de lo que
podemos ver en nuestro juego, y como pueden ver, es
bastante aburrida por el momento, no
podemos ver nada. Así que vamos a conseguir algo interesante
en nuestra vista de juego. Para que podamos empezar a ver cómo
pondríamos un juego juntos. Entonces si hago clic derecho aquí, y hago dos objeto D, sprites, cuadrado, Y podemos renombrar nuestro
cuadrado si queremos Y voy a
llamar a este uso de la palabra. No se parece mucho a
un piso en este momento, pero lo
resolveremos en un minuto. Se puede ver que tenemos esta plaza en medio
de nuestra ventana de juego. Ahora bien, si queremos poner este
cuadrado hasta el fondo, que sea más como en el piso, entonces lo que realmente podemos hacer es Si pasamos el cursor sobre nuestra escena,
golpeamos el Wk, en realidad podemos
ver aparecer este Gizmo, lo que nos permite
mover Y así podemos pasar el cursor
sobre esta flecha verde, y eso solo nos permite mover este cuadrado alrededor
del eje y Y siempre puedes
si lo has movido y quieres deshacer eso, simplemente
puedes hacer comando o control D en una máquina
windows, y eso realmente
deshará ese movimiento. Y luego di si pasas el cursor
sobre la flecha roja, puedes mover este
cuadrado sobre el eje x Ahora bien, si
observas, puedes ver que mientras estoy moviendo este cuadrado
en el eje x, puedes ver que
en nuestro inspector, si miras hacia arriba a la
parte superior derecha de la pantalla, puedes ver que nuestra posición x está cambiando a medida que estoy moviendo este cuadrado
por la pantalla Entonces por el momento, si lo muevo, puedo llegar a diez,
10.1, si lo muevo hacia abajo de
esta manera menos diez. 0.54 en este momento. Si no quieres moverlo directamente en la vista de escena aquí, realidad
puedes
moverlo en el inspector. Entonces, si vamos al inspector,
podemos pasar el cursor sobre nuestra x. Esta era la que estaba
diciendo que estaba cambiando, y en realidad puedes pasar el
cursor sobre la x, así puedes ver una
flecha yendo en ambos sentidos Haz clic izquierdo en mantener
y arrastrar, y podrás ver que también puedes
moverlo de esa manera. Por supuesto, puedes pasar el cursor sobre
y y moverlo hacia arriba y hacia abajo. Si quieres moverlo en
ambos ejes, simultáneamente, puedes pasar el cursor sobre
este cuadrado azul aquí, hacer clic
izquierdo, y
luego puedes arrastrar este cuadrado a donde
quieras, realmente Nuevamente, si eres observador, puedes ver que aquí
está este rectángulo Y esta es en realidad el área
visible del juego. Esto es lo que esta
cámara puede ver. Y para demostrarlo, lo que
podemos hacer es hacer clic en la cámara y podemos cambiar
el tamaño de este rectángulo. Entonces, si vuelvo sobre
este tamaño, de nuevo, me salen estas dos flechas,
izquierda y derecha Puedo hacer clic y mantener presionado, y
puedo cambiar el tamaño. Como pueden ver, si
lo hago para que la plaza sólo
esté tocando el
costado de esa plaza. Se puede ver en esta ventana aquí, eso es exactamente imitando
lo que puede ver la cámara Y lo que realmente podemos hacer es aumentar el tamaño masivamente y esencialmente ese cuadrado
se hará cada vez más
pequeño y más pequeño porque
nuestra cámara es muy grande, nuestra área de visualización de nuestra
cámara es masiva ahora, y así nuestros cuadrados muy
pequeños en comparación Ahora, llamé a este piso, y eso es porque quiero
que sea un piso en nuestro juego. Así que vamos a mover esto
hacia abajo aquí, así. Y luego
lo quiero en el medio. Así que podría intentar conseguirlo
en el medio así, pero es un poco complicado hacerlo bien en el medio. Pero si lo queremos
justo en el medio, es cuando x es cero. Porque en realidad justo en el medio de nuestra cámara
es x es igual a cero, y es igual a cero porque nuestra cámara también está en esa
posición. Entonces tiene sentido que
poner algo en el medio de la
cámara es donde se coloca
la cámara al
centro de la cámara. Pero
volvamos a bajar esto otra vez, así que lo movemos aquí abajo. Y entonces queremos que este sea un piso que cubra
todo el fondo aquí. Ahora bien, ¿cómo lo hacemos? Bueno,
queremos escalar en nuestra x. Entonces, si pasamos el cursor sobre x
y lo arrastramos hacia arriba, podemos hacer de este un piso de
selección de hielo así Y ahora tenemos un piso en
la parte inferior de nuestra pantalla. Entonces sería un poco genial tener una pelota que cae al suelo como que
cae al suelo. Entonces hagámoslo a continuación.
4. Tu primer script: Ahora bien, ¿qué es lo que
realmente quiero hacer? Bueno, inicialmente, solo
para probar las cosas. Cuando golpeo play,
quiero que la pared se mueva en alguna
dirección inicialmente. Entonces lo que podemos hacer es
que podemos subir aquí, presionar Enter y simplemente
escribir conmigo. Serializar campo. Eso está entre corchetes, y luego voy a
escribir vector privado dos, y voy a subrayar la velocidad
inicial punto y coma. Entonces voy a
hacer campo serializado otra vez, privado voy
a decir rígido dos D. Asegurarme de que sea cuerpo rígido
dos D. No solo cuerpo rígido, y luego voy
a hacer por dos D. Luego bajé para comenzar y
voy a hacer cuerpo rígido dos D la velocidad es igual a subrayar la velocidad
inicial Ahora, voy a salvar eso. Voy a dar click de nuevo
a mi editor de unidad. Y voy a echar un
vistazo a mi consola para
asegurarme de que no tengo ningún
rojo en esta consola. Y si haces clic en claro
y no hay rojo, entonces no he cometido ningún
error en mi guión. Pero por ejemplo,
si vuelvo a mi guión y escribí mal el cuerpo de
Ridge dos D, tal vez usé una minúscula
aquí, y luego Y volví aquí. En realidad me mostraría
un signo de exclamación rojo. Yo daría click en él,
y diría algo a lo largo
de las líneas del nombre cuerpo rígido dos D no existe en
el contexto actual. Y luego
volvería a mi código y
me iba, Oh, tonta de mí. Usé una D minúscula, y de hecho nombré a mi cuerpo
rígido dos variables D, sin embargo mayúscula D. Guarde
eso otra vez, y es feliz. Ahora bien, si le pego a play ahora, no pasaría nada, en realidad,
permítanme darle solo a play. Y como pueden ver, no hay errores ni nada, y
no pasa nada. Ahora bien, eso es porque todavía no
hemos puesto este guión
en nuestra escena. Y si hacemos clic en nuestra bola, y nos desplazamos hacia abajo. Lo que realmente podemos
hacer de la manera más sencilla de poner nuestro guión en nuestra bola es simplemente
arrastrarlo y
soltarlo en nuestra pelota. Así que vamos a hacer eso, arrastrar
y soltar eso aquí abajo. Lo arrastraremos
aquí abajo para agregar componente, y lo conseguirás ahí. Otra forma en la que puedes hacerlo es
déjame simplemente
quitar ese componente de eliminación. Puedes hacer agregar componente, y solo puedes
comenzar a escribir bola y verás tu guión aquí y puedes
simplemente hacer clic en él, y esa es otra manera
fácil de agregarlo. Ahora bien, si mantengo la
velocidad inicial a
cero, a cero, no vamos a
ver que pase nada. Entonces hagamos esto
algo así como diez
y diez Y entonces realmente
ves este cuerpo
rígido dos D aquí, y muy similar a como
arrastramos y dejamos caer nuestro material de recompensas
en material De hecho, podemos arrastrar y soltar nuestra bola sobre el cuerpo
rígido dos D. Y eso en realidad es
asignar el cuerpo rígido dos de componente que está en nuestra bola en esta
variable aquí Así que en realidad está
asignando este componente aquí a esta variable aquí Lo que significa que en nuestro guión, podemos establecer cualquier cosa
que esté en este componente. Y una de estas cosas
que está en este componente, no se
puede ver aquí, pero está en ese componente es la velocidad. Entonces, si golpeamos play, en realidad
puedo ver que
nuestra pelota golpea
las paredes y empieza a
rebotar porque le dimos una velocidad inicial.
Vamos a intentarlo de nuevo. Bien, eso no se
ve muy emocionante. Así que juguemos con nuestro material
hinchable para
que rebote en las paredes,
un poco mejor Entonces probemos una fricción de
cero y una rebote de uno. Ahí vas. Eso está
rebotando mucho en las paredes ahora
5. Escenas y GameObjects: Bien, las cosas se están
poniendo interesantes. Por eso me vuelvo a poner el sombrero porque
las cosas
se están poniendo serias. Aquí tenemos una pelota volando
alrededor de nuestro juego. Y creo que tenemos que
explicar un poco lo que está pasando y
lo que acabamos de hacer. Así que vamos a sumergirnos. Entonces creamos una escena. Lo nombramos escena principal. Llegó con una cámara.
Agregamos una bola. Agregamos un techo de piso, pared
izquierda, pared derecha, y creamos un
nivel en el que pusimos todos estos solo para hacer
las cosas un poco ordenadas. Y realmente no
explicamos qué es todo eso. Y hagámoslo ahora. Bien, comencemos
con lo básico. Qué es una escena. Ahora, tenemos una escena aquí. Lo hemos llamado escena principal. Y esencialmente una escena es una
colección de objetos de juego. Entonces todo dentro de una
escena es un objeto de juego. La cámara principal
es un objeto de juego. Esta pelota es un objeto de juego. Este nivel es un objeto de juego. Pisos un objeto de juego, etcétera, etcétera. Entonces estos objetos de juego, aunque
todos son objetos de juego, lo que los hace diferentes
entre sí son
los componentes que se mantienen
dentro de estos objetos de juego. Así que la mayoría de los objetos de juego que
ves dentro de todos los
objetos de juego en realidad que has visto sideocne tendrán Y eso es porque en una escena, el objeto del juego tiene que
ser colocado en alguna parte. Entonces la transformación
lo pone en una posición. También le da al objeto del juego
una rotación y una escala. Entonces la transformación es el
componente más básico que realmente
puedes tener
en un objeto de juego. Lo que hace especial a esta cámara
principal es que tiene un
componente de cámara en ella. Y así este componente hace de
este objeto de juego una cámara. Y luego tiene un
oyente de audio ahí y tiene este guión de
cámara adicional universal aquí también Pero lo principal que hace que este objeto de juego de cámara principal especial es este componente de
cámara. Si echamos un vistazo a la pelota. Nuevamente, tiene un
componente de transformación en él, pero tiene este componente de
renderer de sprites en él Y si minimizamos
eso, si recuerdas, agregamos un cuerpo rígido dos D, y agregamos un
colisionador circular dos D, y agregamos este guión de bola Pero el componente del
renderer de sprites esencialmente significa que
esta bola es un Entonces ese es nuestro propósito principal
de este objeto de juego
es que esté mostrando un
sprite visible que podamos ver Ahora bien, este objeto de juego de nivel
es un objeto de juego muy básico. Solo tiene este componente de
transformación en él porque solo estamos
usando como contenedor, casi como una carpeta
donde sostenemos otros
objetos del juego solo para mantener las cosas
ordenadas. Ahora bien, ¿qué es una escena? Bueno, dije que una escena es una colección de
objetos de juego. Eso es cierto. Y realmente una escena es una forma
de organizar tu juego. Por lo que un juego simple
solo puede tener una escena. De hecho, puedes salirte con tuya creando un juego que
solo tenga una sola escena
y puedas mostrar y ocultar elementos
del menú y para
este juego en y puedas mostrar y ocultar particular, solo
tendremos una escena, y eso está absolutamente bien. Pero para juegos más complejos, es posible que desee una escena
para el menú principal, otra escena para el
primer nivel del juego, otra escena para el
segundo nivel del juego, otra escena para el
juego sobre pantalla. Y así es posible que quieras dividir el juego de
esa manera en particular. En realidad
también puedes apilar escenas. Así podrás tener dos o tres, cuatro escenas abiertas
al mismo tiempo, una
encima de la otra, y esa es una forma muy viable de separar tu
interfaz de usuario de tu juego principal. Entonces es posible que tengas una escena de interfaz de
usuario que esté abierta durante
todo el tiempo de tu juego, y es la superposición que ves encima de todos
tus niveles, etcétera Y así esa es otra forma
de armar un juego. Pero para este juego en particular, lo
mantendremos agradable y sencillo. Tendremos una escena. No cargaremos ninguna otra escena
ni nada por el estilo, y eso mantendrá las cosas bonitas y simples para este tutorial
en particular.
6. Variables: Bien. Entonces ahora
hablemos un poco de nuestro guión porque nuestra pelota
realmente no hizo nada
demasiado interesante. Teníamos gravedad que la
hacía caer y rebotar un poco. Pero cuando en realidad
queríamos enviarlo en una
dirección particular y que
rebotara alrededor de la pantalla, en realidad
agregamos un guión Y echemos un
vistazo a ese guión ahora. Entonces lo que puedes hacer es hacer
clic en la pelota y luego expandirla haciendo
clic en esta flecha aquí, el guión de la bola, y luego
déjame hacer doble clic aquí. Eso realmente abrirá el
script en el código de Visual Studio. Entonces, ¿qué está haciendo este guión? Bueno, queremos
controlar el balón. Así podemos controlar la pelota
a través de su cuerpo rígido dos D, y tenemos este
cuerpo rígido dos D en esta bola. Y si recuerdas,
podríamos controlar el balón
teniendo una escala de gravedad de uno. Pero en realidad puedes establecer la velocidad de este
cuerpo rígido dos D en un guión, y eso es muy útil
para que la pelota se mueva en una dirección particular
a una velocidad particular. Entonces cualquiera que haya hecho alguna
física sabe que
puedes especificar una velocidad o
algo usando un vector. Y porque estamos
haciendo un juego de dos D, solo
necesitamos un vector
bidimensional. Entonces un vector es que solo
puedes pensarlo como un
titular para dos números. Entonces, al crear esta línea aquí significa que esta velocidad
inicial está disponible en nuestro editor,
y la podemos ver aquí. Entonces esta velocidad inicial
se ve un poco diferente. Pero en realidad, aquí
está Esta línea aquí. Y para probarlo. Entonces por el momento,
dice velocidad inicial. Pero si solo digo algo como mínimo, velocidad inicial. Así que esa velocidad inicial mínima, y vamos a cambiar
eso ahí así. Si vuelvo aquí, Unity, lo
pensarás por un segundo, y luego cambiará eso
a velocidad inicial mínima. Así que se tomó eso
y lo ha convertido en algo que es un poco
más legible humanamente. Velocidad inicial mínima. Pero es exactamente esto aquí. Bien, entonces esto es en realidad
lo que se llama una variable. Y esta variable
aquí es como queremos cambiar realmente la
velocidad de nuestra bola. Y así queremos poder
concretarlo nosotros mismos
en el editor. Y entonces esto es lo que está haciendo
esta línea. Ahora bien, si acabamos de eliminar este campo
serializado y
acabamos de hacer de esto una
variable privada así Si volvemos aquí,
Como pueden ver, no
podemos ver esto en el editor. Y así no podemos especificar la velocidad de nuestra
velocidad inicial de nuestra bola. Y así si golpeamos play ahora, Nuestra pelota simplemente se sentaría tristemente
ahí sin hacer nada. Ahora, por supuesto,
podemos establecer esto en código, y eso es razonablemente
fácil de hacer. Entonces si solo vengo aquí y hago algo
como Vector dos, e hice diez diez, así. Entonces estoy especificando que
esta variable
comienza con un valor de x
es igual a diez, y es igual a diez. Entonces si vuelvo
aquí, y golpeo play. Entonces como pueden ver, nuestra
pelota rebota alrededor. Pero es un poco doloroso cada vez que quiero ajustar la velocidad inicial
de esta pelota Tengo que entrar aquí e irme, es un poco demasiado lento, así que cambio esto para decir 15 15, ahorro, vuelve aquí. Unity lo piensa un poco. Y luego volví a pulsar play. Y la pelota es un
poco más rápida, pero a lo mejor creo que es demasiado rápido, vengo aquí, vuelvo aquí, la
cambio, ya sabes, eso es
un poco doloroso. Así que la unidad hace que sea agradable
y fácil para nosotros exponer esta variable en el editor para que
podamos cambiarla. Y la forma
más sencilla de hacerlo es hacer campo
serializado entre corchetes como este frente a privado, y entonces eso le dirá unidad
para mostrar esto en el editor Entonces ahora si vuelvo aquí, ahora
puedo cambiar
estos valores aquí, 12 12 y es solo un poco
más rápido para mí cambiar estos valores así.
7. Formación básica terminada: Enhorabuena. Hemos
cubierto los fundamentos de unidad y ahora estás listo para quedarte
atrapado en un proyecto real.
8. Laberinto: Bien, comencemos
este increíble proyecto. Vamos a dar click en Nuevo Proyecto, y voy a elegir
dos DURP como mi plantilla Y puedes elegir
tu ubicación, y yo solo voy a
guardarlo por defecto aquí, que está en una carpeta llamada Morgan Page courses
y voy a llamar a este Laberinto luego haz clic en
Crear Proyecto. Bien. Una vez que ese proyecto esté abierto, voy a cambiar
mi diseño a Morgan, que es esencialmente de dos tres con una consola aquí abajo. Y luego en assets, voy a
hacer click derecho y elegir Crear carpeta y
voy a llamar a esto Mae. Y luego dentro de Mae, voy a crear una
carpeta para mis texturas. Y luego otra
carpeta para mis guiones, y eso probablemente
servirá por el momento. Bien, voy a arrastrar mi juego de mosaicos Maze desde mi escritorio a esta carpeta
Texturas. Ahora, si hago clic en
este conjunto de mosaicos M PNG, puedo abrirlo con
mi editor de sprites Y voy a rebanar esto, haga clic en rebanar y cuadrícula por tamaño de
celda debería ser dos, cinco, seis por dos, cinco, seis. Mantener vacío s. esto es un
poco útil esto mantener rets
vacíos porque Si alguna vez
quieres agregar a esta baldosa, agrega otras fichas y cosas, entonces en realidad si básicamente
puedes llenar estos restos
vacíos más adelante Básicamente están
vacíos en este momento, pero es posible que quieras
llenarles las cosas. Entonces tiendo a mantener
esta marcada. Bien, entonces ahora tenemos un juego de baldosas de laberinto
muy básico, pero es bastante sorprendente lo mucho que puedes hacer con solo un
pequeño juego de azulejos como este. Así que asegúrate de hacer clic en
Aplicar y cerrar. Voy a crear
otra carpeta aquí y voy a llamar a esto escenas y voy a crear una escena completamente nueva en
esta carpeta, crear escena. Sólo voy a
llamar a esta escena principal. Y luego hagamos doble
clic sobre eso. No se molestó con esa escena. Fresco. Tenemos nuestra propia escena, igual que una cámara en, cosas
bastante estándar. Bien. Ahora, queremos
dibujar nuestro laberinto. Entonces la forma más fácil hacerlo es si hacemos clic
derecho en aquí, podemos ir a dos D mapa de
teselas de objetos rectangulares. Y ahora tenemos un
mapa de teselas al que podemos dibujar. Pero, ¿cómo dibujamos
a este mapa de teselas? Bueno, necesitamos
crear una paleta. De nuevo, vamos a crear una carpeta
para una paleta podría también. Manteniendo súper organizado
en este momento, y luego podemos hacer clic derecho en crear dos D Tile Palette,
nuevamente, rectangular. Y voy a llamar a esto Maze porque esta
será nuestra paleta Maze. Entonces si llegamos a ventana, dos D, podemos dar click
en paleta de azulejos aquí. Acopemos esto aquí así, y tenemos nuestro laberinto pálido
ya creado ahí dentro. La otra forma de hacerlo es
que puedes subir este panel de paleta de teselas y luego puedes crear la paleta directamente
aquí así. Esa es otra forma de hacerlo. Bien, entonces queremos arrastrar, conjunto de
azulejos laberinto hasta aquí. Voy a arrastrar y soltar, y luego necesito crear
una carpeta para mis mosaicos. Si hago clic aquí, ponlo bajo texturas
y crea una nueva carpeta. Y sólo voy a
llamar a este laberinto azulejos. Entonces sé lo que son todos
estos azulejos. Y elige, y
eso desaparecerá y creará un montón de azulejos. Pero lo de la llamada ahora
es que podamos hacer click aquí y podamos
empezar a dibujar cosas. Pero eso se ve terrible. Y la razón por la que se ve
terrible es que no hemos establecido correctamente
el tamaño del azulejo establecido. Voy a establecer nuestros
píxeles por unidad a 256256. Y haz clic en Aplicar aquí, y eso ya se ve
mejor. Haga clic en Mapa de azulejos,
haga clic en Paleta de azulejos, y podemos dibujar. Bastante genial, ¿eh? Trabajemos a nuestra manera. Desde el centro hacia afuera
y dibujaremos un lado
del laberinto y luego
esencialmente lo reflejaremos Creo que esa es probablemente
la mejor manera de hacerlo. Entonces comencemos con el centro. Entonces, si puedo averiguar dónde está
el centro,
creo que está ahí. Así que abajo así. Dibuja eso así. Ahora,
puedes dibujar tu propio laberinto. No tienes que copiar mi laberinto. Pero tengo uno al que estoy haciendo trampa y copiando, como me pueden ver
mirando a la izquierda, tratando de
averiguar cómo lo hice. Entonces sí. Bien. Entonces, lo que estoy haciendo aquí es que solo estoy usando el pincel estándar
aquí en la paleta de azulejos. Entonces, si alguna
vez te gusta Si no está dibujando
por alguna razón, es probable que no
hayas seleccionado esto, y entonces realmente tienes que seleccionar el azulejo con el que
quieres pintar. Y en realidad, puedes
elegir múltiples de estas cosas de clic
clic y arrastrar, y luego eso se convierte
en lo que estás pintando con Es bastante
poderoso. Es bastante genial. La mejor manera de hacerlo, creo que es seleccionar esos, y luego Sí, por
ahí, creo. Entonces escojamos ese perno
que sobre ahí así. Y luego
lo genial de esto. Ahora he creado
este objeto aquí. Puedo usar eso para dibujar
con, lo cual es amable y genial. Entonces déjame mostrarte
cómo hacer eso. Así que puedes hacer clic en esta
Marquesina seleccionar pincel nuevo, y en realidad puedes seleccionarlo desde aquí. Eso es amable y genial. Entonces puedo hacer eso. Y alejar un poco esta cámara, para que podamos ver un poco lo que
estamos haciendo. Entonces probablemente va a haber suficiente Y ya no quiero
dibujar con esto. Entonces, ¿con qué quiero dibujar? Yo quiero dibujar con eso. Así que quiero
mantener siempre un cuadrado un ancho de baldosa para que los monstruos
y esas cosas pasen. Entonces sí, eso se ve bien. Ahora bien, lo que puedes hacer
porque es un poco complicado trazar una línea como esta porque
puedes deambular a
un lado así Entonces puedes elegir esta, que es que llenaremos
toda una zona así,
que no es lo que quiero hacer, pero en realidad también es buena para
dibujar líneas. Así que eso funciona bastante bien. Todavía no sé
cuánto tiempo quiero eso. Pero ahí tienes. Eso funciona. Y entonces
tienes una goma de borrar aquí porque no quiero
esa parte al final Bien. Ahora, déjame hacer mi selección de
marquesina otra vez Solo quiero
seleccionar la parte inferior de esto o tal vez la parte superior.
Yo haré el fondo. Voy a tratar de solucionarlo.
Creo que eso quiere ir ahí. Y después quiero
seleccionar la parte superior de eso. Y eso puede ir ahí así. Entonces eso se ve bastante bien. Déjame
volver a hacer mi herramienta de marquesina y pintar ahí. Ahora, creo que empecé
un poco bajo, lo que puedo hacer mover selección
con pincel activo. Entonces creo que lo que puedo hacer es seleccionar todo eso. Bien. ¿Eso funcionará?
Sí. Ahí vas. Puedo moverlo hacia arriba. Que necesito hacer zoológicos mi
cámara un poco más. De hecho creo que
esta parte de aquí es subir una.
Déjame hacer eso. Así que de nuevo, sólo tienes que
seleccionar estos movimientos. Eso es bueno. Sí, no creo que quiera
ir más allá. Creo que está bien. Ahora, quiero sacar un poco el
muro aquí, así que hagámoslo. Bien. Entonces quiero este de aquí. Quiero dibujar ahí así. Y entonces haz eso dibujar eso. Entonces planteo eso. Quiero copiar esto aquí abajo,
así que volvamos a hacer mi pequeña selección de
Marquee Voy a poner uno
aquí abajo y hacer otro. Aquí, así. Creo que estos realmente quieren
estar favoreciendo. Quiere estar
así”. s eliminar esto. Entonces creo que esencialmente quiero
esto de ahí, creo. Yo solo quiero borrar quiero ir ahí así. Pero claro, eso está mal ahora. Entonces queremos arreglarlo. Entonces eso es complicado de
arreglar con este juego de mosaicos
porque borramos eso. Entonces necesitamos otra capa
aquí para poder arreglar eso. Eso lo haremos en un segundo. Acabemos con
lo que estamos haciendo. Reposicionar el un
poco por el momento. Sí. Bien. Bien, así que eso se ve bastante bien. Tenemos algunos huecos, y así podemos arreglar los huecos, primer lugar,
agreguemos algunos pisos. Así que haga clic derecho sobre la cuadrícula de dos objetos D, mapa de
teselas, rectangular. Vamos a bajar esto a aquí, y solo voy a llamar a esto porque eso es
todo lo que va a ser. Si hacemos este un pedido de inlayer y luego
el piso es cero, entonces significa que el piso
estará debajo Las paredes. Entonces lo que podemos hacer ahora
es seleccionar placa de azulejo. Asegúrate de que dice piso aquí. A veces puedes meterte un
poco en un fregadero, si lo hace, entonces realmente puedes
elegirlo aquí, a
qué capa estás pintando. Entonces queremos elegir esta, llenar caja, y podemos dibujar
en nuestro piso así. inmediato, luciendo mejor
ahora. Ese es nuestro piso. Pero sí queremos algunos agujeros. Queremos unos agujeros
ahí y allá y allá porque lo que
vamos a hacer es hacer que
este fondo negro y vamos a hacer eso ahora para que podamos ver
cómo será eso. Da click en la cámara,
baja al ambiente, tipo de
fondo, color sólido. Hagámoslo tono
negro así. Otra vez, ya
luciendo un poco mejor, en realidad queremos
desmayar esta parte ahora. De hecho es bueno
que cambiemos eso, lo hace obvio. Otros bits que queremos
hacer paleta de azulejos negros, asegúrate de que estamos pintando en un
piso y levantemos eso. Entonces sí tenemos algunas brechas. Tenemos algunos agujeros aquí, aquí, aquí y aquí, cuales necesitaremos otra capa solo para rellenar
esto porque es un conjunto de azulejos
tan básico que
necesitamos emplear algunos pequeños
trucos para llenar esos agujeros. Entonces hagámoslo ahora. Así rejilla,
clic derecho, dos objeto D, azulejo rectangular, y
voy a llamar a esto muros. Voy a llamar a
esto fue extra. Y asegurémonos de
que nuestras paredes extra estén encima de nuestras
paredes. Así que las paredes son una. Entonces, si hacemos dos aquí, entonces eso asegura que
las paredes estén en la parte superior. Los extras de las paredes
estarán encima de las paredes. Y veamos.
Intentemos llenar este vacío. Entonces, ¿cómo lo hacemos entonces? Entonces eso es esto, creo. Ahí vas. Eso va a hacer. Entonces llenaste un
pequeño agujero ahí. Aquí tenemos esto. Bueno, eso se
ve así. Yo lo haré. Y entonces tenemos un agujero
aquí, lo cual voy a hacer. Esta de aquí otra vez es ésta. Y ese hay
uno complicado porque
en realidad no tenemos ese. Para que podamos darle la vuelta
a éste porque lo queremos ahí. Entonces, lo más fácil es darle la
vuelta a este. Nosotros, podríamos rotar
el otro, pero creo que voltear
podría ser mejor Para que puedas voltear el
pincel actual con este artilugio aquí. Vamos a darle click y a
ver, lo volteamos. Entonces eso se ve bien. Y entonces qué
tenemos aquí? ese, creo que
Pits ¿no? No, no lo hace. Está arriba a la derecha. Sí. Entonces es éste volteado Entonces quiero hacer eso. Ahí vas. Fresco. Entonces tenemos medio nivel. Um Si. En realidad, nos estamos
perdiendo esto aquí. Eso es solo ¿eso
es lo que es eso? Ese es ese,
creo. Ahí vas. Bonito. Comando para guardar. Y, aún falta
uno. ¿Qué es esto? Esto es abajo a la derecha, que es. Ahí vas. Fresco.
Creo que estamos bien. Sí, creo que estamos bien. Así que guarda eso. Y queremos seleccionar todo
eso y reflejarlo. Entonces veamos cómo
vamos a hacer eso, para que
podamos hacer una selección de Marquee Seleccionemos los muros. A eso, que es entonces patear
con todo eso. Pero claro que
no queremos hacer eso
porque eso va a ser basura Pero aquí podemos usar esta herramienta, que volteará todo el asunto, y luego estamos bien. Creo que ahí vas. Haga clic. Hecho en eso, tenemos que hacer nuestros pisos. Entonces, pues vamos a
deshacernos de eso. Podemos simplemente pintar nuestro piso
porque son todos los mismos azulejos. Así que solo haz clic en éste, en realidad. Haga clic en eso. Y estamos pintando en nuestro piso porque es todo el mismo azulejo. Es
todo eso de ahí. Entonces eso es bueno, y entonces no queremos
hacer nuestros pequeños extras. Puedo hacerlas todas
singularmente. Pero soy perezoso. Entonces voy a hacer
Marquee select. Ese tirón de arrendamiento. Vuelve aquí y
mira si, ahí tienes. Eso se enlinea. Haga clic.
Haga clic, y luego acabamos de tener algún piso
ahí que necesitamos eliminar. Ahí vas. Um. Bien. Y y y tal vez hubiera sido mejor que Markie
la seleccionara. Bien, creo que se
ve bastante genial. Así que descansemos ahí. Bien.
9. Laberinto Navmesh: Ahora, para que nuestros
enemigos puedan encontrar su camino alrededor de este laberinto, vamos a usar
lo que se llama una malla Nav. La mejor manera de entender una malla
Nav es simplemente usarla. Entonces, si Google Nav mesh más este H eight man Nav mesh más GitHub repo debería estar en
ese listado en alguna parte, o simplemente dejaré caer
un enlace en las notas Pero si te desplazas
hasta el fondo aquí, sí te dice cómo agregar este NavMesh plus
a un proyecto de unidad El método tres es en realidad
el mejor método. Entonces queremos copiarlo y queremos instalarlo a
través del gestor de paquetes. Entonces, si volvemos a
nuestro proyecto de unidad, vamos a Window and
Package Manager, y hacemos clic en este desplegable junto al plus, y queremos instalar
el paquete desde una URL G. Entonces podemos pegar en esa URL
GT y darle click a instalar. Una vez que esté instalado, podemos cerrar nuestro gestor de
paquetes. Una vez Unity deja de pensar en las cosas, programa muy
filosófico. Unidad, le gusta
pensar mucho en las cosas. Bien, cerremos eso Y solo para asegurarnos de que
no tenemos ningún rojo en la consola después de hacer clic en borrar y nuestro paquete NavMesh
está listo para ser usado Entonces lo que queremos hacer es, bueno, en realidad
podemos expandir nuestros paquetes e ir
a NavMesh plus Da click en la M de lectura, y solo
podemos seguir las
instrucciones aquí. Usando tu proyecto,
creando objeto en la ruta de escena Agrega servicio de
navegación, superficie y este
NavM hagámoslo Entonces haz clic derecho, crea vacío, vamos a asegurarnos,
está en la ruta. Vamos a llamar a esto malla de Na. Vamos a restablecerlo solo para
estar en el lado seguro. Y luego quisimos agregar superficie de
navegación,
creo que lo fue. Sí. Eso se ve bien. Y luego Navegación recoge fuentes a D. Sí, eso parece correcto, también. Y luego está diciendo que la superficie de
Nav
no se gira
respectivamente a d d. Así queremos hacer clic en esta superficie de
rotación a x
y para que eso desaparezca, y verás
que está girada x -90, solo
parece que necesita
eso para hacer lo suyo Entonces esa es una
pequeña malla de Nav feliz ahora. En realidad podemos hacer clic en hornear
y no va a hacer nada, pero tampoco se
queja de nada, así que está tratando de hacer algo Bien, solo vamos a guardar eso. Ahora lo que queremos hacer es
si ampliamos nuestra grilla. Ahora, voy a agregar
colisionadores separados a nuestra red. Podríamos usar las paredes aquí, pero creo que es un poco más
limpio y más fácil agregar nuestros propios colisionadores en un mapa de azulejos separado Así que vamos a añadir dos objeto D. Agreguemos otro mapa de teselas. Rectangular,
obviamente, vamos a
llamar a esto colisionadores
porque eso es lo que es Y esto será útil para
hornear la malla Nav y también para evitar que nuestro jugador
se tope con las cosas Lo que podemos hacer es
que queremos añadir a este inicio tecleando colisionar Y queremos que el mapa de teselas
colisionen dos D aquí. Y no queremos
renderizar este mapa de teselas. Esto es puramente por colisión. Entonces voy a apagar
el renderer de mapas de teselas. Entonces voy a
ir a Tile Palette, voy a usar este bloque
aquí porque es una pared. Puedo usar cualquiera de estos en realidad. Bueno, en realidad
quieres uno que esté llenando toda la plaza, así que el colisionador es correcto
porque déjame simplemente hacer esto Si solo me aseguro en
la superficie del colisionador. Entonces, si solo hago eso, se puede ver que ahí se pone un colisionador
verde Si usé ese y puedo ver que ahí pone medio
colisionador Entonces hace que el choque sea
la forma del sprite. Pero por el momento, solo
voy a tener los
colisionadores como fichas de tamaño completo Y vamos a probar esto. Entonces si hago eso y vengo aquí y hago hornear. Eso todavía no funciona
porque necesito
agregar un mapa de mosaico
modificador de navegación. Ahí vas. Podría intentarlo de nuevo, Y eso es algo que funciona, pero no realmente porque quiero que
esta sea área de anulación. No es transitable, no es
transitable, dibujando colisionadores. Entonces veamos si ese aspecto un poco era más sensato ahora. Amable Empecemos a dibujar algunas cosas más y
veamos qué pasa. Entonces, si vengo a
esta paleta de azulejos, y
dibujemos nuestras paredes así. Así y así. Veamos qué
hace ahora el horneado. Así que eso es genial. Así que tenemos una
zona transitable aparte de ahí. Pero debería poder
mandar al enemigo por ahí. Pero no puede pasar por ahí. Entonces creo que
vamos a tener que usar los colisiones de tamaño adecuado para
que esto funcione Entonces estos son correctos
y estos son correctos, pero vamos a dibujar en el tamaño
adecuado choca aquí Entonces queremos que miremos. A ver si ya puedes
pasar por ahí. Pero vamos a dibujar este
también. Ese. Ese. Esa así. Bien, veamos como eso es más feliz Y eso es más feliz. Pero todavía está un poco constreñido
pasando por ahí. Así que vamos Bien. Dibuja eso así, y podemos usar eso. Pero no
los queremos así. Vamos a tener que darle
la vuelta a éste. Hagámoslo,
voltearlo así. Entonces ahí vas. Eso probablemente
va a ser más feliz. Vamos a Marquee seleccionar y copiar algo de esto Bien. Y me pregunto si
debería ser así. Sí, hagamos eso
antes de darle la vuelta a ese,
uno , y queremos esencialmente ese
pero volteado Ahí vas. Y ese volteó Bake Sí, eso se ve
bastante bien. Bien. Así que vamos a seleccionar la tecla. Pat haga esa de ahí,
esa de ahí. Bien. Y me voy a ir
a hacer el resto de esto. Puedes hacer esto por tu laberinto particular
que has creado o si intentas
copiar lo que he hecho,
bueno, voy a detener el video
aquí y reiniciaré cuando todos
los colisionadores estén dibujados Bien. Una vez que hayas dibujado
todos tus colisionadores, así que mira algo así Si vas
ahora a NavMesh y haces clic en Hornear, entonces deberías ver
algo como esto Ahora bien, ¿qué significa todo esto? Bueno, esencialmente, lo que ha hecho
la malla Nav es que se descifra
de todos los colisionadores, donde el enemigo puede caminar Esta zona azul aquí es
donde el enemigo puede caminar, y obviamente está evitando
cualquier lugar que tuviera un colisionador Y entonces lo que esta malla Nav es
genial porque puedes crear un script de IA que usaremos algo
llamado agente nab mesh Y este agente de malla nab se
adherirá a esta zona transitable. Así que no caminará por ninguna de estas paredes ni
nada por el estilo. Se pegará a esta zona azul. Y así para ir de,
digamos, aquí a aquí, irá
si voy por aquí o debo ir por ese
camino,
y como que se va a dar cuenta de
eso por sí mismo. Pero no va a
pasar por la pared. Y por lo tanto, realmente parece una IA
bastante inteligente. En realidad no lo es,
pero
parece que está pensando en qué camino tomar y eso es
bastante genial.
10. Laberinto enemigo: Bien, ahora tenemos nuestro NavMesh. Vamos a crear un enemigo
que pueda utilizarlo. Entonces porque nuestro enemigo
finalmente va a ser una mancha, vamos a crear un círculo Por nuestro enemigo. Así que dos
objetos D sprites círculo porque vamos a convertir ese círculo
en un blob eventualmente Pero sólo para mantener las cosas
bonitas y simples, será un círculo para comenzar. Entonces comencemos aquí en la esquina
inferior izquierda. Llamemos a este enemigo. Y vamos a crear un script Así que haz clic en
nuestra carpeta de scripts, haz clic
derecho y elige
Crear guión C Sharp, y voy a
llamar a este enemigo AI. Y vamos a hacer doble clic en eso. Ahora, necesitamos una referencia
a nuestro jugador. Entonces vamos a hacer guión bajo de transformación de campo
serializado Entonces nuestro enemigo sabe
dónde está nuestro jugador. Y sobre esta IA enemiga, vamos a tener
un agente NavMesh Así que voy al agente
privado de Nash, y esto realmente atraerá el espacio de nombres de IA del motor de unidad porque ahí es donde está
el agente NavMesh Sólo voy a llamar a
este agente de subrayado. Porque lo que podemos
hacer es
configurarlo en nuestro inicio. Así que puedo hacer subrayado
agente es igual a obtener agente componente Entonces, por supuesto, esto
significa que necesitamos
agregar un agente de malla Nav
a nuestro objeto de juego, lo cual
aún no hemos hecho, pero lo haremos. Y entonces lo que podemos hacer en
actualización es que podemos decirle a nuestro agente de Nombres establecer el destino a la posición
del jugador. Porque queremos
atacar a nuestro jugador. Queremos movernos
hacia nuestro jugador. Y así esta es la fuente mágica que le dirá a nuestro agente de malla
Nab, ve a buscar a nuestro jugador Y como le estás diciendo
al agente NavMesh que lo haga, va a usar la malla
Na para hacer esto Por lo que va a atravesar sólo en la malla Na
para llegar a nuestro jugador Entonces creo que deberíamos meter nuestro jugador en la esquina superior
derecha para que
podamos ver que nuestro enemigo
puede llegar hasta nuestro jugador, todo el camino hasta allí. Entonces hagamos dos objetos D, sprites Hagamos de nuestro jugador
un triángulo por el momento, y aumentaré el orden
en el layout solo para poder ver nuestro jugador y vamos a
arrastrarlo a la esquina superior derecha Llamemos a este jugador. Y luego queremos arrastrar nuestro guión de IA enemiga hasta
aquí sobre nuestro enemigo. Y luego queremos arrastrar a nuestro jugador a nuestra referencia de
jugador aquí. Entonces ahora, en nuestro guión de IA enemiga, todo
esto está muy bien configurado. Entonces nuestra variable de jugador
en realidad será distransforme aquí Bien. Entonces dijimos que necesitamos agregar a nuestro
enemigo un agente de malla Nav. Entonces hagámoslo ahora. Entonces si apenas empiezo a escribir
Na mesh, entonces ahí tienes. Puedes ver nuestro agente
NavMesh aquí. Y por el momento, vamos a
mantener todo por defecto. Vamos a golpear play
y a ver qué pasa. Ahora, como pueden ver, se
está moviendo por aquí, pero no podemos verlo. Pero eso es bastante genial. Se va todo el camino, así que va a repasar,
pero aquí desapareció. Y era como que
giraba alrededor. Si si nos aseguramos de que el
enemigo seleccionara y golpeara play probablemente va a estar jugando
con nuestra rotación Bueno, si tenemos ahí un sprite
lob. No queremos que el sprite blob esté
rotando alrededor. Entonces eso tampoco va a
funcionar para nosotros. Así que tendríamos que hacer un
par de retoques más a nuestro agente NavMesh para evitar
que eso suceda Lo primero que tenemos que
hacer es que podemos hacer subrayado agente punto actualización eje igual a false Entonces el eje arriba en un juego de dos D. Bueno, ya sabes,
tenemos x e y arriba y abajo, pero de lo que está
hablando realmente está arriba
como en arriba como en
el eje Z porque en el eje Z porque realidad el agente Unity NavMesh es una especie de agente tres D. Y tan confuso para el agente NavMesh es
en realidad el eje Z. Entonces es decir, no te
metas con nuestro eje. Así que eso debería impedir que nuestro
sprite desaparezca, y luego evitar que nuestro sprite gire alrededor Podemos hacer la rotación de actualización
es igual a false. Entonces no queremos que nuestro agente
esté rotando por ahí. Entonces le estamos diciendo
que no haga eso. Vamos a intentarlo de nuevo. Yo
juego. Ahora, mira esto. Nuestro enemigo viene por nosotros. Está atravesando el laberinto. Bien. Y son los dioses.
¿Qué tan genial es eso?
11. Jugador de laberinto: Bien, sí se siente un poco injusto que el enemigo
pueda venir y atacarnos, pero no tenemos forma
de evitarlos. Así que vamos a arreglarlo ahora. Entonces, si entramos en guiones, haga clic
derecho y cree un guión
C sharp, y solo voy
a llamar a este Player, y hagamos doble clic en
eso para abrirlo. Bien, ¿qué queremos aquí? Bueno, para ser útil para poder establecer nuestra velocidad a la que
estamos corriendo. Así que vamos a crear un
flotador y
llamaremos así a esta
velocidad de subrayado Seamos específicos
y llamémoslo privado. Este privado es
en realidad opcional. Si lo dejas fuera,
entonces se presume que esta variable en particular
aquí es privada, pero
a veces es bueno ser explícito
sobre estas cosas Derecha. ¿Qué más
queremos aquí? Pensemos. Queremos tomar la
entrada de nuestro jugador para que podamos mover a nuestro
personaje de jugador. Entonces podemos crear aquí un vector
privado tres, y vamos a llamar a este
subrayado entrada de usuario Ahora podemos usar esto
en nuestra actualización Bien. Como aquí dice con facilidad, actualización se llama una vez por fotograma Este método aquí se llama
automáticamente para nosotros. ¿Qué queremos hacer? Bueno, queremos dos establecer nuestra entrada de usuario igual a
dos. Ahora un vector. Vamos a crear un nuevo vector y queremos que la x
venga de nuestra entrada get axis Y esto es zon input, obtener acceso pero es Cool. Entonces eso es tomar
aportes de nuestro usuario. Entonces eso es en realidad te voy a mostrar dónde se
configura esto en un segundo. Obtenemos estos de forma gratuita, viene junto con una
configuración predeterminada de proyecto de unidad. Y sí, en realidad son las AWS AWSD y
las teclas de flecha Estamos usando get
access access porque esto es un poco
de un juego de dos D D. Entonces el get axis raw no
tiene ningún alisado en él. Si en realidad solo puedes usar
get axis y eso funcionará. Pero lo que encontrarás es que el personaje se acelerará un poco. Entonces presionarán una entrada y no
irá inmediatamente a toda velocidad. Poco a poco va a llegar allí. Y eso es por que toma
en cuenta la sensibilidad. Y nuevamente, en un minuto
te mostraré dónde se
configura eso. Pero vamos a conseguir que esto funcione y luego podremos pasar por ello. Entonces queremos hacer
position es igual a transformar position plus y así queremos seguir agregando a nuestra posición esta
entrada de usuario esencialmente. Podríamos hacer algo n como
usarlo tiempos de entrada velocidad. Bien. Y eso
parecería que estaba funcionando. Um, así que hagamos eso por el momento porque eso es poco súper sencillo de
entender, ¿verdad? Estamos tomando nuestra posición,
y somos todos los fotogramas, y eso es muy
importante, cada fotograma. Y si lo piensas bien, la cantidad de fotogramas
que ocurren cada segundo en un juego en realidad
puede cambiar dependiendo de lo potente que sea
tu computadora. Entonces eso es algo
a tener en cuenta. No estamos tomando eso en
cuenta por el momento. Entonces lo que estamos haciendo
es cada fotograma, estamos tomando la posición, y estamos agregando cualquiera que sea
nuestra entrada de usuario, de hecho, este vector tres,
solo para ser específicos, y podemos simplemente poner
un cero común ahí. En realidad no tengo que
hacerlo. De hecho voy entender que
va a tomar un crear
un vector tres de x y y cero de todos modos
si lo dejas fuera. Pero solo para ser específicos, ¿verdad? Estamos configurando la x de este
vector a nuestra entrada actual, nuestra y de este vector a
nuestra entrada de corriente en la vertical y Z sin tocar. Entonces y entonces estamos
multiplicando esto. Estamos haciendo esto primero.
Las multiplicaciones ocurren primero Quiero decir, puedes poner
corchetes alrededor de esto, pero en realidad es innecesario
porque hace esto primero. Entonces veces eso por lo que sea que
estemos poniendo aquí. A lo mejor deberíamos poner una velocidad
por defecto porque
no veremos que pase nada si la velocidad es cero, así que es bueno tener
una velocidad predeterminada. Y eso debería
parecer que está funcionando. Entonces hagámoslo. Vamos a hacer clic en Jugador. Arrastremos el
guión de nuestro jugador ahí, lo
configuré a una velocidad
de uno por defecto. Vamos a hacer clic en Reproducir. Y en realidad, desactivemos nuestra y por el momento
porque no
quieres preocuparte de que un enemigo
nos persiga mientras estamos
probando el movimiento. Oh, guau, eso es
rápido. Eso es rápido. Entonces bajemos la
velocidad a 0.01. ¿Qué aspecto tiene
eso? Ser lento. Hagámoslo, está bien. Fresco. Ahora bien, hay algunas
cosas obvias mal aquí. En primer lugar, estamos
atravesando paredes. Entonces no estamos tomando en
cuenta ninguna colisión. Y también, una cosa que es
bastante sutil, en realidad, y estoy usando las
teclas AWSD para mover esto, pero también puedo usar las teclas de
flecha Entonces esta es flecha izquierda flecha
hacia abajo flecha derecha. Ahora bien, una cosa que
no es obvia es en
realidad en la diagonal,
vamos más rápido. Es sutil, pero
definitivamente está ahí, ¿verdad? Se puede ver que la diagonal
es más rápida que ir a la izquierda, y
generalmente no quieres eso. Y esto es un error que
veo pasar mucho con gente haciendo su movimiento de
personajes. Yo se olvidan de éste. Entonces, primero arreglemos el problema de la
diagonal. Entonces pongamos esto
en permanentemente 0.09. Y entremos en nuestro jugador. ¿Y cómo solucionamos
el problema de la diagonal? Bueno, lo que en realidad está
pasando aquí es cuando alguien presiona el ky izquierdo. Y en realidad,
vamos a hacer esto. Podemos depurar esto para que
veas que esto sucede. Así que depurar log y hacer De hecho, solo
podemos hacer entrada del usuario
porque sí, debería trabajar. Entonces si acabo de hacer entrada de
usuario, dos puntos. Y luego lo que puedes
hacer entre llaves. Puedes usar entrada, y solo se insertará. Esto es bastante útil esta forma
de hacer cuerdas en Do sharp. Si pones $1
delante de una cadena, entonces puedes usar
estos corchetes para insertar variables donde
quieras en la cadena. Y eso es muy agradable. De lo contrario, tendrías que
hacer concatenación. Esa es otra cosa que funciona. Puedes concatenar variables al final de
las cadenas, pero se vuelve un poco desordenado si
luego quieres continuar con
la Aquí no tendría
mucho sentido, pero podrías
usarlo input y no
conozco algunos signos de
exclamación o Y es solo que esto solo
siento que es un poco neter. Bien. Entonces echemos un vistazo
y veamos cómo es esto. Bien. Entonces se puede ver que es
todo ceros en este momento, pero si golpeo a la izquierda, se
puede ver que inmediatamente
va a menos uno son x, y si voy a la derecha, ya sea D
o flecha derecha, muestra uno Si hago A y S o y a la izquierda, simultáneamente, se puede ver
que es menos uno menos uno. Y por eso
va diagonalmente
porque va a la izquierda y hacia abajo, cantidades
iguales, y así termina yendo
diagonalmente por la pantalla Entonces ojalá, ya sabes, tengas una
comprensión básica de los vectores. No son demasiado complicados, pero ojalá puedas
averiguar qué está funcionando, cómo funciona eso a partir de eso. Allí hay una depuración muy básica. Pero lo que no es obvio
es eso en la diagonal. Entonces, si vamos a la izquierda, solo
estamos agregando uno a x, en realidad cada fotograma
del momento, o en realidad multiplicado por la velocidad. Entonces no es exactamente
que, por ejemplo, digamos que no multiplicamos por velocidad, o la velocidad es una, estaríamos en uno, cada fotograma a la izquierda. Si eres diagonal, entonces en realidad
estás agregando uno a la izquierda y
otro al extremo derecho. Pitágoras entra
ahí, en realidad, porque vas abajo una
y vas a la izquierda una, lo
que significa que diagonal, que significa que diagonal, realidad
estarías
yendo a la raíz cuadrada
de una al cuadrado más una al cuadrado Entonces, esencialmente, la raíz
cuadrada de dos, que es el rollo de tambor. Bueno, en realidad no
tengo que resolverlo. Puedo depurarlo a
nuestra consola para decirme. Entonces lo que puedo hacer
es que puedo tirar U de magnitud de entrada. Ahí vas. Y una magnitud de un vector es esencialmente
la distancia, y.
entonces Y ojalá,
poder ver el tema, bien. Aquí tenemos cero al final. Entonces, eso está bien. Tenemos una magnitud de uno yendo a la izquierda y a la
derecha arriba y abajo, tenemos una magnitud de uno. Pero mira si vamos
diagonalmente, 1.41, cuatro,
lo que sea, 1.4 1421, cuatro,
algo así, ¿ Y si hago la raíz
cuadrada de dos, sólo para demostrártelo, pipagor raíz
cuadrada de dos, 1.4 Ahí vas. Entonces Pypagor trabajando ahí y está despilfarrando
nuestra velocidad Entonces hay una solución realmente
fácil para esto, y solo debes
hacerlo cada vez. Ni siquiera hay que
pensarlo. Entonces, si nada de eso
significa nada para ti, ni siquiera te
preocupes por ello, ¿verdad? Todo lo que necesitas hacer es hacer
normalizado. Todo eso. Y lo que puedo hacer
ahí es que voy a normalizar eso normalizado y
tomar la magnitud de eso. Y luego verás
cómo lo arregla. Entonces de nuevo, dejó uno abajo uno. Pero diagonal. También uno. Y puede ser bastante obvio para ti que la velocidad en la
diagonal ahora es buena. Perfecto. Entonces tenemos buen movimiento en la diagonal,
que es lo que quieres. Y lo único
que es buggy ahora es que somos dependientes de la
velocidad de fotogramas, lo que no es nada bueno. Queremos tener una
velocidad constante en unidades por segundo,
no unidades por fotograma porque
nuestra velocidad de fotogramas puede cambiar, pero los segundos son
segundos ahí mismo. Bastante sólido. Entonces, ¿
cómo hacemos eso? Bueno, no
pensemos demasiado en ello. Sólo tenemos un pequeño
truco para arreglar esto. Lo multiplicamos por
tiempo do a tiempo. Y eso convierte esencialmente en una velocidad
de unidades por segundo. Y sólo muy brevemente, eso es porque Delta time es la cantidad de tiempo que
cada fotograma está tomando. Entonces multiplicando esto aquí, si los fotogramas son muy rápidos, entonces esto es muy pequeño, y si los fotogramas son muy lentos, entonces es grande y
iguala todo Entonces explicación muy básica. Fresco. Entonces probablemente signifique que tenemos
que subir un poco nuestra velocidad
porque como digo, tiempo
Delta suele ser bastante pequeño porque los
fotogramas son rápidos. Oh, sí, apenas podemos
ver que nos estamos moviendo. Por lo general, alrededor de las cinco, creo que sí. Ahí vas. Cinco es bueno. Voy a parar
eso y hacer cinco. Bien, entonces estamos
atravesando paredes. Y eso es porque no tenemos un colisionador en nuestro jugador Entonces claro, estamos
atravesando muros porque aquí
tenemos colisiones, así que ya pueden ver, aquí
tenemos colisiones Entonces el jugador debería
ser para chocar con estos, pero solo si el jugador
mismo tiene un colisionador, y necesitas un colisionador
tanto en el jugador
como en el nivel A pesar de que no es
lo suficientemente bueno como para agregar un Caldor, y déjame
probarte eso Entonces si agrego componente Caldor, y vamos a mantenerlo realmente simple Círculo Caldor me va a hacer bien. Y ahora estoy tratando de conseguir el
momento, pero ¿a quién le importa? Um. Esto no va a funcionar. Pero solo demuestro que no
lo es. Ahí vas. Entonces tenemos un colisionador
pasando por otro colisionador. Y ese es un
tema bastante conocido porque en unidad, necesita un cuerpo rígido en al
menos uno de los colisionadores
para que ocurra la colisión Entonces es generalmente lo metes en lo que se mueve,
que es el jugador aquí. Así que cuerpo rígido dos
D, Ahí tienes. Asegúrate de agregar un cuerpo rígido dos D
y no un cuerpo rígido. Entonces Simulado tiene que ser marcado. No quieres ninguna gravedad, y eso debería hacer el truco. Guardar Ahí vas. Así que golpeando contra esa pared, y no nos pueden pasar Estamos golpeando
contra esa pared. Pero eso sí parece
bastante basura. A pesar de que es
un poco de trabajo. Quiero decir, si nos acercamos,
se puede ver que estamos pasando por este
choque, quiero decir A ver si puedo seleccionar
ambos. Ahí vas. Mira, estamos
pasando por el Clider. Bueno, eso es un poco
raro. Y eso es porque estamos como luchando contra
la física en el camino. La física está haciendo lo
suyo, y nosotros estamos
haciendo lo nuestro, y los dos
chocan un poco Así que en realidad tenemos que ir
con la corriente en este caso, ir con la física de la Unidad dos D y utilizarla para el movimiento, y entonces todo va a ser un poco
más feliz que este horrendo Si eso fuera un pozo muy aleta, probablemente
podríamos pasar
por él, no llamar. Bien, entonces vamos a arreglar eso a continuación.
12. Física del jugador de laberinto: Bien. ¿Qué estabas haciendo? Ah, sí, íbamos a
arreglar nuestras colisiones de mal calidad, ¿no? Hagámoslo. Sue. Ahí está nuestro
guión ahí está. Bien. Vamos a hacer doble clic en eso. Ahora, probablemente te estabas
preguntando por qué pongo entrada
del usuario aquí y la estamos
usando aquí y aquí. Así que
en realidad no hay razón alguna para que sea una variable de clase. Podría haber hecho
un vector tres aquí, lo que sea. Y lo hice de esa manera. Pero en realidad nos
facilita cambiar
nuestro código para hacer nuestras colisiones
físicas adecuadas Entonces necesitamos usar actualización fija. Ahora bien, esto es como
la actualización de física. Y así, si quieres estar
sincronizado con nuestro motor de física, tenemos que usar esto. Así que ya lo tenemos listo. Pero sí necesitamos una referencia
a nuestro cuerpo rígido dos D. Rígido dos D. Y no parece que
vaya a estar usando start. Así que cambiemos
eso a despertar. Despierto es el primer
método al que se llama. Obviamente, un buen lugar para
configurar cualquier referencia a componentes que necesitemos
en nuestro objeto de juego. Y definitivamente
necesitamos hablar con nuestros componentes rígidos del cuerpo si se
mueven de posición. Y entonces
en realidad podemos simplemente tomar todo esto basado ahí dentro. Agradable y fácil actualización. Entonces es exactamente
lo mismo que esto, pero hacerlo a través del cuerpo
rígido dos D para que sea amigable con
el motor de física. Vamos a comentarlo.
Vamos a comentarlo. Ahora te preguntarás estoy jalando la
entrada del usuario aquí y no aquí. Bueno, la actualización tiende a
llamarse más veces que la actualización fija, por lo que es un buen lugar
para tomar en la entrada del usuario. Esto no tiene nada que ver
con nuestro motor de física, simplemente tirando de lo que el usuario ha presionado
hacia abajo en el teclado, y queremos
hacerlo súper rápido. Y entonces encontrarás que si hiciste esto
aquí, tus entradas, nos sentimos lentas y es solo porque a esta actualización se
le llama más veces que Entonces veamos cómo le va eso. Oh. Ahí vas. Ya sabes,
golpeando esa pared, y no
vamos a atravesarlo. Entonces eso es bastante genial. Oh o no. Eso es bastante gracioso. Vamos a arreglar eso. ¿Qué está
pasando ahí? Bueno, esa es una solución
fácil, en realidad. Venimos aquí a
nuestro cuerpo rígido dos D. Y especificamos que no
queremos rotar sobre la z. Vamos a intentarlo de nuevo. Bien. Fresco. Bonito. Fresco. Eso es bueno. Bastante bien. A mí me gusta mucho. Tal vez solo podamos asegurarnos de
que esté un poco menos
pegajoso en las esquinas, tal vez. Podemos ayudar un poco
creando un vamos a crear
un material de carpeta Vamos a crear un dos D. Asegúrate
de elegir dos D. Física material dos D. Sólo
voy a
llamar a esto resbaladiza Voy a tener una fricción
de cero rebote de cero, y simplemente arrastraremos y soltaremos
eso sobre el material ahí Y para estar seguros, lo
arrastraremos a nuestro cuerpo
rígido dos D también. Echemos un vistazo. Bueno, eso es como que dar la
vuelta de la esquina
es un poco mejor. No hay mucho en él. Pero
eso es bastante genial. En realidad, sólo para que quede claro, si volvemos a jugador, Asignar el material al cuerpo rígido dos D en realidad
es suficiente Tuve que buscar
ese en realidad. De hecho, puedes tener
múltiples colisionadores aquí con diferentes materiales
físicos Pero si solo tienes uno, entonces agregar el material
al cuerpo rígido dos D significa cualquier colisión en ese
objeto de juego heredará El material en el ridgidbody dos D. Así que no
duele tenerlo en ambos, pero voy a
tenerlo solo en el Rdidbody dos D,
y este círculo colisionador dos D puede heredar
ese material de ese cuerpo
rígido
dos D. Así que solo
aclaración dos D. Así que no
duele tenerlo en ambos,
pero voy a
tenerlo solo en el Rdidbody dos D,
y este círculo colisionador dos D puede heredar
ese material de ese cuerpo
rígido
dos D. Así que solo
aclaración ahí.
13. Patrulla de laberintos: Bien, pongamos a nuestro
enemigo deambulando por nuestro laberinto hasta que se acerquen demasiado a nosotros y
luego vendrán tras nosotros. Entonces abramos la IA enemiga. Y vamos a agregar algunos campos
más en la parte superior aquí. Así que agreguemos flotador
para nuestro rango de ataque. Entonces, cuando el jugador se ponga
dentro de este rango de ataque, el enemigo va
a venir tras nosotros. Agreguemos
también una velocidad porque tenemos una
velocidad para nuestro jugador, pero no tenemos una velocidad para nuestro enemigo, así que
deberíamos arreglarlo. Ahora necesitamos algunos puntos de paso. Entonces la forma en que esto va a
funcionar es que el enemigo se va a mover entre estos waypoints hasta que se metan dentro del alcance de
ataque del jugador Así que esto tiene que ser una
serie de waypoints. Entonces ponemos un par
de corchetes al final y verás
lo que hace eso en un minuto. Entonces usemos nuestra
velocidad, en primer lugar, para que podamos hacer subrayado que la
velocidad del agente es igual a la velocidad Tengo que configurarlo
y comenzar. Eso es genial. Ahora, por el momento,
comentemos esto. Y pensemos
lo que queremos hacer. Entonces queremos movernos entre puntos de
paso y vamos
a tener múltiples waypoints Entonces, en cuanto el enemigo
llegue a un waypoint, quiere comenzar a moverse
al siguiente waypoint Así que tenemos que verificar qué tan cerca estamos si estamos
cerca de un waypoint, y luego tenemos que pasar
al siguiente waypoint Entonces voy a hacer
algo sencillo como si agente de
subrayado
restante distancia es menor de lo que podemos poner algo que me suele
gustar a los valores duros, pero esto probablemente
va a ser bastante seguro 0.5 F y necesitamos rastrear
nuestro punto de ruta actual. Entonces, solo mantengamos una pista. Y tengamos este público por
el momento para que podamos
ver cómo funciona esto. Entonces vamos a llamar a este índice de puntos actual. Bien. Entonces, esencialmente, nuestro
índice de waypoint actual necesita ser incrementado si el agente ha llegado al waypoint
actual Pero tenemos que ser un poco cuidadosos porque no podemos simplemente incrementar porque
saldremos de los límites de esta matriz Entonces, si llegamos al
último waypoint, tenemos que volver a cero Y entonces hay una manera genial de
hacer esto, agradable y fácil, para que podamos hacer subrayar el índice de
waypoint actual más uno, y pongamos corchetes alrededor de
esto solo para ser claros Y entonces podemos hacer módulo de manera puntos de longitud de punto. Entonces queremos establecer nuestro agente
conjunto destino
dos, este waypoint Eso es en este índice de
waypoint actual. El corchete, el índice de puntos de referencia
actuales de subrayado y los waypoints Entonces solo queremos
tomar la posición de la transformación así. Entonces veamos si esto funciona, y luego lo explicaré. Entonces necesitamos
establecer nuestros waypoints. Así que vamos a crear un
objeto de juego vacío, llamarlo waypoints. Reiniciemos este reinicio, y vamos a crear
nuestro primer waypoint Simplemente llamemos a esto cero porque está en el índice
cero o lo estará. Y vamos a hacer doble clic. Entonces está ahí arriba y queremos
tirarlo hacia abajo hasta aquí. Bien. Y si quieres que sea un
poco más visible, podemos hacerlo como un punto rojo. Ahora es un poco
más visible. Entonces ese es nuestro primer waypoint. Duplicemos eso y movamos nuestro siguiente
waypoint hasta aquí Llamémosle a éste. Duplicemos eso. Pasemos eso a Todo eso dos y bajemos eso hasta
aquí y eso es tres. Ahora en realidad
necesitamos asignarlo
a nuestra matriz de puntos way aquí. Ahora, es bastante complicado
porque queremos arrastrar y soltar los cuatro de
estos aquí. Pero si empezamos a hacer eso,
entonces eso desaparece. Entonces hay un truco para esto. Bajemos aquí,
preparémoslo, y luego simplemente hacemos clic
en este candado aquí. Y luego ahora,
podemos dar click en eso. Haga clic en eso y arrástralos
a waypoint a este bit aquí, y soltará los cuatro Y se puede ver que este
es el elemento 00123. Así que eso funcionó.
Puede deshacer eso ahora Todo lo que hace ese candado es que bloquea al inspector en lo que sea que
hayamos seleccionado. Para que podamos seleccionar otras cosas
y el inspector
seguirá estando en la
cosa original. Eso es genial. También alcance de ataque. Hagamos ese cero
para que
simplemente vaya dando vueltas por
ahí y de hecho, no
tenemos el
código para esto, en realidad, no importa, pero hagamos esto cinco vamos a golpear play y
veamos qué pasa. De hecho, bajemos hasta aquí y echemos un vistazo a nuestro índice de waypoint
actual Se va ahí
incrementó eso, vas a cuatro y
luego vuelves a cero Para que veas que nuestro enemigo va bicicleta entre
todos los waypoints Empecemos de nuevo y
expliquemos lo que está pasando. Nuestro
índice de waypoint actual comienza en cero, si miramos nuestro código, Bien, distancia
restante va a comenzar como cero
porque
realmente no hemos establecido el destino
inicialmente Entonces va a entrar
aquí bastante inmediatamente, y va a
incrementar el waypoint A ver si
ese es el caso. No estoy diciendo mentiras. Sí. Es decir, ese waypoint
actual sí se incrementa de inmediato. Lo cual tiene sentido porque, sí, no
hemos establecido nuestro
destino inicialmente, por lo que la distancia restante es algo indefinida, pero es cero. Entonces entraremos
aquí. Incrementaremos el índice de waypoint actual índice Waypoint actual
comienza en cero. Añadimos uno. Y hacemos
waypoints de módulo longitud de punto, y tenemos cuatro Entonces va a lo que hace
este módulo es que se necesita siempre es el
resto que devuelve. Entonces va a ser 1/4 es
cero resto uno, ¿verdad? Entonces es una forma bastante inteligente
de andar en bicicleta por 0-3. Yo solo voy cero, uno, dos, tres, cero, uno, dos, tres, porque si lo
piensas bien, una vez llegamos al
punto de manera índice tres, que es este aquí porque en realidad
los índices empiezan en cero. Entonces esto es 0123. Una vez que llega al punto de
manera actual índice tres, si esto se convierte en cuatro, entonces obtendríamos un error
porque esto abandonaría el final de la matriz y
rompería las cosas. Pero lo que hace es que va
tres más uno es cuatro, pero hace cuatro módulo
cuatro que es uno. Pero claro,
devuelve el resto, es un resto cero. Entonces eso se convierte en cero. Así que eso es
un poco genial de matemáticas, lo cual es muy, muy práctico. De hecho voy a ver esto
bastante en la programación. Y luego asignamos el destino establecido a
puntos de vía y como digo, esto va a uno inmediatamente,
camino 0.1 posición. Entonces voy a ser éste de aquí. La posición de éste aquí. Y así esto empieza a marchar
hasta aquí. Y no vuelve a entrar en
este bit de código aquí hasta que se ponga dentro de 0.5
f de este waypoint, y luego comenzará
a entrar aquí, incrementar esto y comenzar a marchar hacia
el Entonces eso es bastante genial. Ahora tenemos que hacer
es agregar nuestro código para cuando el jugador se acerca
demasiado al enemigo. Entonces hagámoslo. La distancia del jugador es igual a y podemos usar nuestro método de
tres distancias vectoriales, que toma dos vectores tres y devuelve la
distancia entre ellos. Entonces queremos la posición
del jugador y la
posición del enemigo. Esto es sobre el enemigo, por lo que es solo una oposición
transformada. Entonces eso debería devolver lo lejos que está
el jugador de nosotros. Y cierre la sesión. Así. Y entonces podemos decir, si la distancia del jugador es
menor que nuestro rango de ataque, entonces podemos usar esta cosa que acabamos de
comentar aquí. Queremos establecer nuestro destino
a nuestra posición de jugador. En realidad queremos
regresar en este punto porque estamos fuera de
nuestro modo de patrullaje, y ahora estamos en
nuestro modo jugador Entonces así va a funcionar esto. Entonces, vamos a correr esto
para ver cuál sería una distancia justa para
ese rango de ataque. Bien. Así que nos estamos acercando cada vez más aquí patrullando aquí arriba Así que en realidad no ha caído
por debajo de 20, no lo creo todavía. Obtener Tal vez diez sería bueno. Quiero decir, no fue del todo, quiero decir ,
obviamente, de momento, está puesto a cero, así que nunca vamos
a llegar tan cerca. Entonces echemos un vistazo. Sí, el rango de tach es cero. Cambiemos esto a diez entonces. Y creo que
probablemente sea bueno. Bien. Así que justo fuera de rango ahí. Pero ahora estamos en el rango, y debería estar
viniendo tras nosotros. Sí, se saltó ese waypoint. Y ahora definitivamente
tiene aroma y
viene tras nosotros. Sí. Y entonces,
obviamente, estamos muertos. Bien.
14. Laberinto la mancha: Bien, vamos a traer un par de
texturas de bloques para nuestro enemigo. Voy a arrastrar esto a nuestra
carpeta de texturas. Así que vamos a seleccionar ambos. Puedes seleccionar uno
y luego desplazar y mantener presionado para seleccionar el
siguiente, así, y luego voy a elegir
256 para nuestros píxeles por unidad. Haga clic en aplicar. Y cerrar nuestros puntos de paso. Vamos a arrastrar estos.
Entonces seleccionas ambos. A continuación, arrastre y suelte. Y la unidad es bastante inteligente. Si arrastras dos texturas, va a presumir que
estás intentando crear una animación usando
esas dos texturas. Entonces eso es bastante inteligente. Y vamos a entrar en laberinto y crear una nueva
carpeta llamada animaciones. Bien. Y vamos a poner
nuestra animación aquí y voy a llamar a
este blob guión bajo caminar así Haga clic en Guardar. Y se puede ver que esto
ha creado un objeto de juego, y ha agregado un animador, y creó un controlador para nosotros también bastante Y si hacemos doble clic en
este controlador, en realidad creamos un
estado en el que inicialmente entra que está conectado a
esta animación, blob walk Si hacemos doble clic en eso, entonces vamos a arrastrar esto y hacer
este panel de animación aquí. Y podemos seleccionar blob. Podemos ir a escena. Vamos a acercarnos un poco. Vamos a mover eso
ahí por el momento. Ordenando capa,
necesitamos obtener esto por encima de nuestra capa para el nivel. Y si le pego a play, una forma hacerlo es simplemente
reproducir la animación aquí. Ahora ya tenemos este
blob seleccionado. O puedo presionar play aquí para ver
realmente que
reproducirá esa animación predeterminada de blob walk tan pronto
como le peguemos play Eventualmente. Pero esto
no se ve muy bien. Parece
algo espasmo, no una mancha. Entonces, ¿cómo arreglamos eso? Bueno, en esencia, esta animación simplemente
va demasiado rápido. Hay múltiples formas
de cambiar eso. manera bastante fácil es hacer clic
en estos tres puntos aquí, y podemos mostrar la frecuencia de muestreo. Y podemos establecer nuestra
frecuencia de muestreo en algo así como uno, lo que ralentizará
las cosas. A lo mejor dos lentos ahora. Cambiemos esto a una
frecuencia de muestreo de dos. Ahí vas. Eso se ve mejor, y solo
estamos como un
poco blogging a lo largo Ahora, no hemos asignado.
Vamos a parar con eso. No le hemos asignado esta mancha a nuestro enemigo. Deja alejar un poco. Hagámoslo. Primero que nada, cambiemos el nombre de esto a blob Y podemos arrastrar
y soltar eso sobre nuestro enemigo y vamos a poner a cero esto y esto para que el blob quede justo sobre
nuestro objeto de juego enemigo Y entonces ya no necesitamos
nuestro renderer de sprites circulo aquí Vamos a quitar eso. Pero todo lo demás
que quieras seguir ahí porque
tiene nuestro guión de IA. Vamos a hacer clic en esa jugada. Ahora tenemos esta mancha genial
moviéndose por nuestro laberinto. Y viene por
nosotros y nos tiene. Bien.
15. Entrada de laberinto: Ahora, sí dije que iba a
adentrarme de donde viene esta horizontal
y vertical. Entonces, si vas a editar la configuración
del proyecto, obtienes este panel de
configuración del proyecto aparece a la izquierda aquí, quieres hacer clic
en Administrador de entrada, y de aquí es de donde provienen horizontal
y vertical. Entonces si expandimos horizontal. Entonces esto define horizontal aquí, y el botón negativo para horizontal es la tecla de flecha
izquierda. Pero también tiene este
viejo botón negativo, y eso es una presionando la tecla de flecha izquierda o la tecla a, luego horizontal se convierte en
menos uno en la x Entonces así es como funciona eso. Y la diferencia
entre el eje get y el eje raw se define
por la sensibilidad. Por lo que esta sensibilidad aquí significará que si
usas get axis, entonces va a tipo de rampa hacia arriba dependiendo del valor
de esta sensibilidad. No pasará inmediatamente de
cero a menos uno, digamos, cuando te fuiste de Aki
pasará una cierta cantidad de tiempo. Entonces porque estoy usando
get access raw aquí, estoy ignorando esa
sensibilidad por completo, y voy 0-1 inmediatamente Así es como
funciona eso, y por supuesto, tenemos vertical aquí. vertical se define aquí con el
botón negativo abajo, botón
positivo hacia arriba, flecha y
el botón negativo botón positivo W. Así es como funciona
eso. Bien.
16. Ratón laberinto: Bien. Vamos a
ordenar nuestros nombres un poco. Entonces solo quiero llamar a
este control una mancha. Entonces vamos a traer un
par de texturas más. Entonces traeremos nuestras texturas
una y dos, y hagamos que nuestro
jugador se mueva. Así que de nuevo,
haz click izquierdo en Ratón uno
, haz clic en Mouse dos, y arrástralo a nuestra escena. Vamos
a tener que seleccionar nuestra
carpeta de animaciones y
voy a llamar a este
ratón vamos a
llamarlo player underscore walk Haga clic en Guardar. Cambiemos el nombre de nuestro
controlador que acaba de crear a player. Y echemos un vistazo donde
puso este ratón aquí vamos a conseguirlo arriba. Y está un poco en el lado grande, reduzcamos esto a 256 píxeles por
unidad y presionemos aplicar. A ver. Pongámoslo en el medio
ahí para que podamos verlo. Todavía es un poco grande, pero lo
abordaremos en un minuto. Sólo voy a
cambiar el nombre de esto a Mouse. Bien. Y seleccionemos nuestro panel de
animación. Entonces solo tenemos que jugar
un paseo en este momento, y mi conjetura es que eso va a ser súper rápido.
Echemos un vistazo. Sí, un poco maníaco. No creo que quiera
ser tan lento como el blob. Entonces cambiemos las muestras
a cuatro y golpeemos Enter. Entonces se necesita eso.
Creo que está bien. Eso es lo correcto, creo. Así que vamos a adjuntar esto a nuestro jugador y vamos a poner a
cero estos
cero, cero, y hacer doble
clic en nuestro jugador para que podamos
ver qué está pasando. Y pienso bien,
antes que nada, vamos a deshacernos de este
renderer de sprites No quiero que ese
triángulo se muestre. Y hagamos clic en el
mouse y hagamos clic en esta cosa de escala aquí para que podamos escalar proporcionalmente
nuestro mouse un poco hacia abajo Pensando en 0.6, probablemente
va a
estar bien. Golpeó play. Y claro, se puede
ver que el problema inmediato es que está reproduciendo esa animación
caminando todo el tiempo. Y eso no se ve bien. Para la mancha, está un poco bien porque la
mancha es solo una mancha Pero para la animación de caminar, realmente no
quieres ver a
alguien caminando en el lugar. Entonces tenemos que arreglarlo. Bien, entonces abramos
nuestro controlador de reproductor, y podemos ver
que tenemos este paseo, solo
puedes arrastrar esto por ahí. Eso es andar estado. Eso es tocar esta obra un paseo, y como que queremos una animación ociosa que
solo esté de pie en su lugar. Entonces lo que podemos hacer es si
entramos en animaciones pincha
sobre nuestro jugador Walk. Podemos
mandar a D que duplique eso. Bien. Podemos cambiarle el nombre
a Idle. Vamos a hacer doble clic en él. Y vamos a deshacernos de
ese segundo marco de caminata porque tenemos este tipo de que tenemos
que seleccionarlo para verlo. Entonces aquí tienes. Ese segundo fotograma es que
puedes verlo cambiando aquí, el sprite del mouse
uno al mouse dos Así que queremos eliminar esto pero asegurarnos de que no somos
seleccionados para jugar un paseo. Queremos jugar un ocioso. Vamos a hacer clic en
éste y eliminarlo. Pero necesitamos nuestro controlador de
reproductor para que esta sea nuestra animación
predeterminada. Así que vamos a arrastrar la animación inactiva
del jugador a nuestro controlador de reproductor. Alejar un poco. Tenemos caminata de jugador, tenemos jugador inactivo queremos que este
sea nuestro estado inicial. Establecer como estado predeterminado de capa. Haga clic derecho aquí. Establecer como estado predeterminado de
capa.
Ahí vas. Si vuelvo a la
escena y presiono play, un mouse solo debería pararse
ahí y en realidad si hago clic en mouse y hago
clic en animador Se puede ver que está jugando a
este jugador inactivo. Queremos la capacidad de
cambiar entre jugar un paseo cuando empezamos caminar y luego volver a estar inactivo cuando
dejamos de caminar. Entonces lo que tenemos que
hacer es que necesitamos agregar un parámetro aquí
y hay un montón de
formas en las que podemos hacer esto, pero solo voy a agregar una bola Bolean verdadero o falso y llamar a
esto caminar y click derecho,
hacer transición ahí Y esencialmente, si hago
clic en esta transición, puedo especificar la condición que se va a mover
de aquí a aquí, y la condición es que
el parámetro walk aquí es verdadero, por defecto es false,
así que no va a hacer esa transición a
menos que de alguna manera se dicked entonces podemos hacer
una transición hacia atrás,
hacer transición, haga clic Haga clic en esa transición. Agrega una condición, y
volverá cuando caminar se vuelva falso. Así que voy a ir a caminar se hace verdad, golpear por aquí,
caminar se vuelve falso, volvemos a
golpear hacia aquí. Entonces así es como funciona eso. Entonces veamos si podemos ver
esto funcionando en la vida real. El Zoom en el juego uno de
aquí no es muy agradable, pero deberíamos casi
poder ver lo que está pasando. Si le pego play, No está haciendo nada. Golpeé caminar. Y ojalá, solo se
pueda ver que ahora
estamos caminando. Y entonces si desmarco esta caminata, volvemos a no caminar Y puedes ver
las transiciones un poco lentas y lentas Déjame inhabilitar al
enemigo por el momento. Vamos a intentarlo de nuevo. Así que haga clic en caminar, y se puede ver que
no pasa del todo de inmediato y luego si me marca caminar. De nuevo, como que hace una pausa. Y eso es porque si
hago clic en éste, tenemos este tipo de tiempo de salida y aquí tenemos una
duración de transición. Así que voy a enterrar esto y voy a
poner eso a cero, y entonces lo que esto significa es que esa transición
va a suceder de inmediato. Y voy a hacer lo mismo de esta manera. Tiene tiempo de salida, transición cero. Ahí vas. Y así esto será un
chasquido inmediato entre los dos. Un poco como nuestro
eje get y get axis raw. Solo queremos que las cosas
sean ágil en un juego arcade. Así que bang. Ahí vas. Bang. Banco. Ahora bien, parece que todavía
hay una pausa aquí, y eso es solo porque
el primer fotograma de
la animación de caminata
sigue siendo el tipo de
estar parado en su lugar. Para que podamos intercambiarlos, lo que hará que las cosas se
vean aún más ágil No es 100% necesario, pero
si hacemos clic en Caminar, se
puede ver que este es
el de pie en el lugar uno, y este es el que camina. Entonces lo que podemos hacer es simplemente mover eso por
aquí por el momento, mover eso a aquí, mover eso de nuevo a allá, y simplemente cambiarlos
esencialmente. Así que volvamos aquí al juego. Inactiva. Ahí tienes, S Inmediatamente cambiando entre los
dos muy rápido ahora. Y creo que eso es bastante
llamado para un juego arcade. Derecha. Ahora, obviamente, no podemos, ya
sabes, estar haciendo esto mientras
jugamos el juego. No podemos estar
caminando así, y luego estamos caminando ahora. Vamos a hacer clic en esto, y
ahora estamos caminando. Y ahora paramos. Tenemos que hacerlo
programáticamente, ¿verdad? Entonces hagámoslo en nuestro guión. Bien, hemos abierto
un guión de jugador. Y vamos a deshacernos
de estos comentarios, y no es necesario que nos
digan qué hace la actualización. Sabemos lo que hace eso. Bien, entonces necesitamos una referencia al animador porque este
es el animador de aquí Puedes ver el panel aquí.
Se llama animador. Este es el animador, y queremos llegar a
esta cosa del paseo Entonces tiene
sentido que caminar esté dentro del animador y
necesitamos una referencia al mismo. Campo tan serializado. Un. Asegúrate de que
no sea animación, es animador, así Animador de subrayado. Entonces podemos bajar aquí y podemos hacer
subrayado animador Recuerda, este parámetro
aquí es un booleano, set ball, y se llama walk Y
queremos caminar cada vez, nuestra entrada de usuario es un
poco distinta de cero. Entonces, ¿cómo averiguamos
si tenemos entrada del usuario? Bueno, como que
lo hemos visto antes. Podemos usar magnitud porque
la magnitud será cero. Si nos quedamos
quietos y no será cero, mayor que cero,
si nos estamos moviendo. Si tenemos una
entrada de usuario, queremos movernos. Entonces esto va a ser agradable y ágil porque lo hemos hecho en actualización Ahora, podemos dejarlo así. Pero si quieres hacer un poco
de optimización, podemos usar algo
llamado magnitud cuadrada. Porque eso hace
lo mismo. Quiero decir, la magnitud cuadrada
va a ser cero si todavía estamos, y va a ser
algún valor si no lo estamos. Aún así, va a ser un
valor mayor que cero. Pero la magnitud cuadrada está un poco más optimizada
porque magnitud, hay
que tomar una raíz
cuadrada de un número. Pero con magnitud cuadrada, no
estamos teniendo que
tomar la raíz cuadrada. Entonces es solo un
poco más rápido, solo una ligera optimización,
no es gran cosa. Entonces volvamos aquí. Entonces, como saben, nuestro animador en realidad está en
nuestro ratón, no en el jugador Así que queremos arrastrar nuestro
objeto de juego hacia allí así. Y luego el animador en el objeto
del juego ahora está
asignado a nuestro guión Veamos cómo se ve eso. Entonces ese es un buen
comienzo. Estamos quietos. Ahora nos mudamos. Y estamos caminando un
poco difícil de ver, en realidad. Vamos a acercar este. Y justo a punto de ver que
nuestras piernas se mueven ahí, pusieron pies muy cortos muy pequeños. Bien, genial. Entonces eso es genial, pero estamos especie de luna caminando hacia atrás
aquí, lo cual no es lo ideal. Ahora, la solución fácil para eso está dentro de nuestro
renderer de sprites en nuestro mouse Tenemos un pequeño volteo aquí, lo cual es bastante práctico, así que simplemente podemos darle la
vuelta al mouse así usando eso. Esto es flip x. Hagámoslo en código. Por supuesto, necesitamos llegar
a nuestro renderer de sprites, que en realidad está en nuestro mouse Para que podamos hacer trampa. ¿Es trampa? No lo sé, pero podemos
hacer algo así. Es igual a. Por supuesto, es recordar que no está en
el objeto del juego del jugador. Está en el objeto del juego del ratón
que está debajo de aquí, pero sí tenemos
animador que hemos asignado, que está en el ratón Así que en realidad podemos hacer esto. Y tenemos a nuestro
renderer de sprites en nuestro mouse. Y luego solo queremos
voltear x, recuerda, y queremos establecer
esto en true cuando nuestro subrayado usuario input dot x left and right
es menor que cero Entonces nos estamos moviendo hacia la
izquierda, así que hemos visto, ¿no tenemos antes que es menos uno cuando
vamos a la izquierda Entonces eso debería hacer el truco. Echemos un vistazo. Ahí vas. Izquierda e izquierda, va a la derecha, y
va a la derecha. La única otra mejora que podemos hacer para esto es en
cuanto libere, vuelve a verse bien. Y hay una solución
fácil para eso. Porque en ti como
que quieres recordar, ¿verdad? Vamos a la izquierda, paramos. Seguimos buscando a
la izquierda, de verdad. Es un poco raro
chasquear siempre para estar buscando bien. Una solución fácil para eso es simplemente decir subrayado la entrada del usuario x es igual a cero, retorno No ejecutamos el código de
abajo si no nos estamos moviendo. Este código aquí solo lo hará alguna vez
si realmente nos estamos moviendo, que es lo que realmente queremos. Voy perfecto.
17. Laberintos para reunir: Bien, lo estamos haciendo bastante bien. De hecho voy a
cambiar por donde
empieza el jugador porque el
jugador quiere empezar por aquí. Bien. Y luego vamos a mover
nuestro gráfico por ahí, para que no parezca que estamos
caminando hacia la pared aquí. Veamos en este momento porque nuestro círculo está un
poco más alto en nuestro cuerpo. Estamos haciendo eso. Así que podemos simplemente mover
nuestro personaje hacia arriba, hacer eso, y luego
creo que eso es mejor. Sí, creo que eso funciona bien. Encontremos que nuestra cabeza está
por encima de la pared ahí porque eso es Sí, está
totalmente bien. Entonces lo que encontrarás
es que la unidad se olvida, cualquier cambio que hagas Durante el modo de juego, cuando realmente
estés
jugando al juego, haz los cambios que se
te olvida Entonces esta y va
a volver a cero. Entonces solo quiero
copiar ese valor. Y cuando presiono stop, como pueden ver,
va a volver a cero, y luego lo voy a
pegar nuevo solo una
manera rápida y fácil de hacerlo. Y entonces solo movamos
eso abajo para allá. Bien. Centrarlo un poco. Y ese es un buen punto de
partida, creo, porque el enemigo va a estar en la esquina viniendo por nosotros. Ahora, creo que es un
momento genial para agregar algunos frunces. Cosas que estamos dando
vueltas, recogiendo en el laberinto, tratando de conseguir antes de que el enemigo
llegue a nosotros y nos mate. Y si no podemos conseguir
todos los Gathers, entonces hemos ganado el laberinto Entonces hagámoslo ahora. Permítanme agregar en algunas imágenes de
recopilación. Así que voy a arrastrar y soltar este pequeño
trozo de queso fresco. Aquí, sólo voy a
llamar a esta bola de recolección. Podría mantenerlo juntando pelotas. Entonces entonces voy a arrastrar aquí
este trozo de queso. Aumentemos el pedido
para que estemos en la cima. A lo mejor queremos estar por debajo de
nuestro personaje aunque. Entonces alrededor de dos. Sí. Y está un poco
en el lado grande, así que cambiemos
nuestra unidad de píxeles b aquí a dos, cinco, seis, aplique. Y eso es lo
correcto, en realidad. Eso me gusta. Eso es bueno. Y si pongo ese queso aquí, y sólo voy a llamar así a
esto se reúnen. Entonces, claro,
lo que quieres es cuando jugamos en el juego, corriendo por ahí, y si
caminamos sobre el queso, lo
recogemos. Entonces necesitamos un guión
llamado Gacrit eso. Abre eso. Así que vamos a
deshacernos de este código de aquí. Bien. Y si ponemos un disparador en este objeto de juego recopilable al
que se adjunta este script, entonces hay un poco
de código que podemos poner aquí que se
llamará automáticamente Esto es en dos D.
Vamos a hacer esto bien. Si lo deletreamos erróneamente, entonces no se le llamará, y si obtenemos
mal el parámetro, no se llamará Vamos a hacerlo bien
en el gatillo dos D. Vamos a cerrar la sesión de algo
en nuestra consola. Bien. Para que podamos ver
que algo sucede. Así lo
hice con y luego solo
podemos mostrar el nombre del objeto
del juego con el que
acabamos de colisionar Entonces este colisionador dos D es en realidad el colisionador en
los otros objetos del juego Esto estará en nuestro
queso y este colisionador dos D en realidad
será ojalá en nuestro jugador En realidad es el único
jugador que tiene colisionadores que se
mueven por el mapa, el M. Así que eso debería hacer el truco Ahora bien, si tocara esto ahora, no haría
nada porque no tenemos , antes que nada, no
hemos arrastrado y
dejado caer nuestro guión ahí, así que hagámoslo Pero incluso ahora,
no pasaría nada porque aquí no tenemos
un detonador. Entonces, ¿a qué me refiero con un disparador? Bueno, déjame mostrarte. Entonces si agrego componente
circle collider dos D. Ahora bien, esto no es un disparador Tenemos que marcar esta casilla aquí. Quiero decir, si ahora choco con
avión, ya ves, sólo
vamos a chocar con nuestro queso porque ese
colisionador es un colisionador Pero los colisionadores se pueden convertir en disparadores con solo
una marca de casilla, y de repente esto ahora
es un disparador Ahora cuando le pego
a play, Ahí tienes. Chocó con el jugador. Eso es exactamente lo que querías. Entonces el jugador ha
entrado en el gatillo que está en nuestra bola Gatherar y disparó ese
pedacito de código aquí. Esto se llama
automáticamente siempre y cuando
tengamos un disparador en
nuestro objeto de juego. Impresionante. Entonces, vamos a guardar eso. Y qué queremos
hacer cuando hemos chocado
con nuestro queso Bueno, queremos que el
queso desaparezca. Hacemos que parezca que hemos
recogido ese queso. Entonces eso es realmente
bastante fácil de hacer. Podemos simplemente hacer objeto de juego
porque estamos en nuestro queso. Así que el objeto de juego es el objeto de juego de
queso, el objeto de juego de recolección. Así que podemos hacer objeto de juego,
establecer active false. Compruébalo. Ahí vas. Recogimos nuestro queso. Bonito. Ahora, por supuesto,
queremos tener una partitura. Y nuestra puntuación será
la cantidad de trozos de queso que hemos recogido antes de
que nos maten el enemigo. Entonces, para que nuestra interfaz de usuario, nuestra interfaz de usuario sepa que hemos
recogido un Gain le. Necesitamos agregar un poco más de
código aquí, en realidad, listo para nuestra interfaz de usuario, porque no sé si ya
has escrito nuestra UI,
pero preparemos este
código para eso. Entonces lo que podemos hacer es que
podemos subir aquí y hacer una estática pública y
explicaré qué
es una estática en un segundo. Acción. Y vamos a hacer tabulación ahí para que su acción sea parte
del espacio de nombres del sistema. Así que eso se agregó
automáticamente si haces tab. Si no se
agrega automáticamente, entonces solo agrega
puedes agregar terminar aquí, solo di usando sistema. Pero si haces tabulación,
como acabo de hacer, debería agregarse
automáticamente. Y entonces voy a hacer voy a llamar a
esta acción sobre reunidos. Entonces lo que puedo hacer aquí
abajo es que puedo hacer reunidos y te
perdonarían por solo hacer
invocar y así Esencialmente, lo que eso hace
es que invoca la acción, y algún otro objeto del juego puede escuchar esta acción
en particular, y cuando
sucede, esencialmente puede ejecutar un método Pero el problema de
solo hacer una invocación de punto, vamos a obtener un error
en este punto Déjame mostrarte una obra de teatro. Y simplemente dice que no hay excepción de
referencia. La referencia de objeto no está establecida. Y eso es porque aún no tenemos ninguna interfaz de usuario
escuchando esto. Y así se trata de invocar
algo que no está ahí. Así que podemos dejar eso en
su lugar porque
eventualmente configuraremos alguna interfaz de usuario para escuchar. Pero permitimos que ocurra un error solo porque
no hay alguna interfaz de usuario escuchando esto. Entonces lo que podemos hacer es simplemente hacer un signo de
interrogación ahí. Y ese signo de interrogación es básicamente tipo de cheques para
ver si on recopilados es nulo, y si es nulo, entonces no
va a hacer la invocación Pero si no es nulo, entonces va a hacer una invocación Entonces esa es como una manera muy agradable y fácil de
deshacerse de ese error, si lo hago ahora, no obtendrás una excepción de referencia nula porque no va a hacer la invocación Pero lo hará cuando
hayamos enganchado las cosas. Ahora, voy a cambiar
ese código en un minuto, pero hacerlo un poco mejor. Pero vamos a crear un
poco de interfaz de usuario para nuestro puntaje, y solo va
a ser un número en la esquina superior derecha. Entonces hagámoslo
ahora, haga clic derecho, vaya a, y voy
a crear un panel. Y si hago doble
clic en ese panel, se
puede ver que está cubriendo
toda nuestra cámara. No quiero eso. Así que
vamos a hacer clic aquí. Y si mantengo presionado el turno, dice También establecer la opción de pivote
o alt Posición de ajuste automático. Y entonces si hago arriba a la
derecha así, va a anclar este panel
a la parte superior derecha de aquí, y entonces puedo establecer este ancho desde esta
altura hasta lo que quiera. 100 por 150 tal vez jugar un poco
alrededor de estos números. 200. Y tenemos un panel en la
esquina superior derecha donde podemos, clic
derecho en la interfaz de usuario texto malla de
texto P. Vamos a agregar
algo de texto a este panel. Debido a que esta es la primera
vez que usas Text mesh P, va a llegar a
este pequeño diálogo,
y solo queremos importar aquí y solo queremos importar elementos esenciales de
la malla de texto pro, lo que permitirá que
Texts P funcione. Y todo text mesh pro es
realmente solo texto en nuestra interfaz de usuario. Es un sistema algo poderoso para mostrar texto en nuestra interfaz de usuario, y vamos a expandirlo para
llenar todo nuestro panel. Así que de nuevo, la opción shift o alt, y vamos a
hacer
clic en esta de aquí, que esencialmente consigue que se extienda por
todo nuestro panel, y luego puedo
bajar aquí y centrar el texto tanto en la
horizontal como en la vertical, así que está en el
medio de nuestro panel, y solo voy
a escribir uno, dos, tres aquí solo para demostrar que
eso va a mostrar algunos una puntuación en la esquina
superior derecha. Ahora, eso está todo bien y bien. Pero aquí hay un
pequeño problema en que si cambio la
resolución de mi juego, como pueden ver, eso
se ha ido bastante pequeño. Entonces si lo hago aún más, decir, cuatro k, decir, es ilegible Nuestro juego se ve bien, pero la interfaz de usuario no es genial. Entonces puedes hacer
algo para arreglar esto. No hay problema. Entonces, si
entramos en click en Canvas y Canvas scaler no
queremos un tamaño de píxel
constante porque eso está
causando el problema Queremos escalar con nuestro tamaño
de pantalla. Haga clic en esto. Lo que tiendo a hacer es mover
esto al medio. Tiene un equilibrio
entre el escalado para el ancho
y el escalado para la altura. Hagamos eso 0.5
800 por 600, bien. Ahora bien, si cambio esta resolución, se
puede ver que nuestra interfaz de usuario no
está cambiando en absoluto. Eso lo arregla bastante bien. Bien. Entonces esto ahora se ve un
poco en el lado grande, así que vamos a ajustar esto. Yo como que lo quiero. Um. Probablemente nunca voy
a ser un número enorme aquí. Vamos a hacer
algo así. Entonces está metida en la esquina
superior, así. Y realmente no me gusta tener antecedentes
en este panel, así que sólo voy a
querer marcar eso. Ahí vas. A lo mejor sólo pueda hacer que el texto sea un
poquito más pequeño. Ven aquí, talla frontal. 32. Sí, eso
se ve bastante bien. Tal vez 30. Ahí vas. Fresco. Eso es bueno. Pero, ¿cómo cambiamos
realmente este texto? Nombremos este texto. Puntuación. Sólo voy
a nombrar este panel. Puntajes así. Entonces necesitamos realmente un guión que nos permita obtener este
texto para poder cambiarlo. Así que voy a crear un objeto de
juego vacío llamado UI. Es restablecer la posición. Y voy a añadir un guión. Este es un juego simple, así que puedo llamar a una interfaz de usuario de script, y manejará toda
la interfaz de usuario en nuestro juego. Pero a menudo, si tienes
una interfaz de usuario muy compleja, posible
que quieras dividir
esta funcionalidad en muchos
pequeños scripts de interfaz de usuario, pero este es un juego bastante básico, así que lo arrastro ahí, así que. Vamos a abrir ese script de interfaz de usuario. Vamos a deshacernos de todo esto. Bien. Hagamos un campo serializado. Texto privado me pro, dame. Ese es el que queremos. Si pulso tabulador, debería
agregar el uso de TM P. Y voy a
llamar a esta partitura de texto. Y luego al despertar solo para
demostrar que esto está funcionando, solo
quiero poner
el texto a cero. Ej. Bien. Bueno, volvamos aquí,
y tenemos que conectar esto. Vamos a hacer clic en UI, y puedes ver que
tenemos este campo aquí. Todo lo que tenemos que hacer es arrastrar y
soltar nuestro texto allí. Y ya lo hemos enganchado. Y si le pego a play, solo salvaremos. Si le pego a play,
deberíamos ver esto ir a cero porque en una estela, estamos en ese pedacito de código que hace eso,
y ahí tienes. Pero claro, queremos
incrementar eso cuando
recogemos un poco de queso Ahora, realmente no deberíamos
estar haciendo nada como incrementar y rastrear
puntajes y cosas en nuestra interfaz Nuestra interfaz de usuario debe ser bastante doblada. No deberías estar rastreando datos, al
menos no
bits fundamentales de datos. Entonces, ¿dónde deberíamos poner la
cantidad de queso que hemos reunido? Bueno, en realidad podemos usar
Gatherle
dije que te explicaría la estática
y no lo hice Entonces déjame arreglarlo ahora. Así que vamos a crear otra estática. Entonces voy a llamar a
esta estática privada en reunidos. Hagamos un pequeño comentario aquí, que es sobre los recolectores
que se están reuniendo Hasta el momento. Ahora bien, esto puede parecer un poco
raro porque esto está en un objeto de juego. Y claro,
podríamos tener juego o, muchos trozos de queso que tienen el
guión de reunir en ellos. Entonces inicialmente, permítanme simplemente crear otro
trozo de queso entonces. Entonces, si duplico esto, y muevo
esto a escuchar Entonces tenemos
dos trozos de queso, y ambos tienen este guión
recopilable encendido Y entonces puede parecer raro que tengamos
esto reunido aquí. No se sostiene eso en
cada objeto de juego, y eso va a ser muy confuso porque sabes
que ese trozo de queso se ha reunido de tres
y ese trozo de queso tiene un rejuntado de cuatro no tiene
ningún sentido, ¿verdad? Bueno, en realidad, de
eso se trata la estática. Estático significa que no es
la instancia de esta clase. Eso tiene este valor en ello. Es la clase misma. Y solo tenemos a la
única clase reunida. Es posible que tengamos múltiples
instancias de recopilación. Es posible que tengas múltiples quesos
que tengan Gaerle en él. Pero la clase misma
sólo existe una vez. Y así podemos decir, bueno, en la clase misma, en esa instancia
de la clase, bueno, ni siquiera es bueno
llamarla instancia porque
no es solo en la clase misma, vamos a sostener una
variable llamada recopilada. Y así solo hay una
versión de esto reunido, y así podemos usar eso para rastrear cuántos quesos
hemos reunido Y podemos hacerlo muy fácilmente. Podemos bajar aquí y
podemos hacer reunidos más D. Cada vez que
recojas un trozo de queso, esta versión, esta variable
va a ser incrementada Y el único problema es que
hemos hecho esto privado. Siempre es bueno tratar de
mantener tantas cosas privadas como sea posible porque
tal vez solo Gatherable realmente
debería actualizar
esto reunido Pero la interfaz de usuario necesita ver
cuánto se ha reunido. Pero podemos enviarla en realidad. Podemos enviarlo como
parte de esta acción. Entonces podemos poner estos divertidos corchetes
aquí con un int ahí. Y ahora en adelante reunido espera tener un int
enviado junto con él. Para que podamos mandar reunidos
cuando invoquemos esta acción. Entonces esta acción espera un int enviado
cuando se invoca, y así eso es exactamente
lo que podemos hacer Entonces, ¿cómo
escuchamos esta acción y
sabemos cuándo la hemos invocado Hagámoslo a continuación. Activar. Entonces enable es algo que se llama en un
objeto de juego cuando está habilitado. La mayoría de los objetos del
juego están habilitados de todos modos, generalmente, a menos
que específicamente
hayas ingresado al
editor y lo hayas deshabilitado. Entonces esto
se llama en la interfaz de usuario porque ese objeto de juego de UI nunca
va a
ser no habilitado. No por el nuestro de todos modos, generalmente. Entonces, activar es un
buen momento para
configurar cualquier acción que
estemos escuchando. Entonces podemos hacer algo
como reunir bola en reunidos y
agregamos lo que llamamos un oyente
a esto sobre la acción reunida Y un oyente es solo
el método, de verdad. Es solo un método al que se llama cuando se invoca esta
acción Para que podamos manejar reunidos. Y entonces puedo hacer aquí manija del
vacío reunida. Ahora, hemos enviado un entero largo,
si recuerdas correctamente. Por lo que esto obtendrá cuánto se ha reunido
automáticamente enviado a la misma. Manejar reunido
obtiene este campo en automáticamente podemos simplemente hacer el texto de la partitura es igual a
recopilada y eso es una en. Necesitamos
convertirlo en una cadena, para que podamos asignarlo a
nuestro texto. Caja así. Y lo único
que queremos hacer,
solo para estar en el
lado seguro es en deshabilitar, siempre
debemos
quitarnos a nuestros oyentes Así que quita nuestro oyente
que hemos agregado en capaz. Y la forma en que lo hacemos es que
hacemos un menos igual a eso. Entonces veamos cómo funciona eso. Puntuación cero. Ahora es uno. Ahora son dos.
Impresionante. Vamos a repasar exactamente lo que hicimos. Aquí configuramos esta acción que vamos a invocar
cada vez que recojamos un queso Cuando lo
invoquemos, vamos a enviar sobre cuánto
se ha reunido hasta ahora, y estamos rastreando
esa recolección dentro, pero como un int estático Entonces solo hay una versión
de la misma, por así decirlo. Sólo hay uno de estos
enteros volando por ahí. Y así enviamos eso a lo largo Porque
acabamos de incrementarlo, reunido más más
eso es un incremento Eso es exactamente lo
mismo que escribir reunidos iguales reunidos más uno, exactamente lo mismo que eso solo un poco más netter
para hacerlo así Y si es cero, ahora después de esta línea, es una, hemos
llamado a reunidos, hemos invocado a reunidos
y le enviamos uno ¿Qué es lo que escucha para esto? Bueno, la UI, UI lo está
escuchando. Es decir, Oh,
quiero saber cuándo se ha reunido
algo. Y la belleza de
esto es que significa que la UI y Gatheran Bo
están muy separados entre sí. Gaula Bo no tiene idea de UI. Y así no debería, ya sabes, Gathering Wable debería
estar haciendo lo suyo, y no debería
importarle el código de la interfaz Deberíamos poder
eliminar este código, reescribirlo porque lo que encontrarás en juegos es que la interfaz de usuario, ya sabes, todos los elementos de la interfaz de usuario tienden a cambiarse
mucho, ya sabes, cuando recoges algo
en este momento es simple, solo
estamos incrementando una puntuación Pero, ¿quién sabe? Sabes, tal vez
queramos hacer
estallar algunos fuegos artificiales, quizás
queramos hacer
sonar un sonido. Quizá queramos saber, hacer un efecto de partícula. Lo que sea, y así la interfaz de usuario siempre tiende a complicarse
más. Y al separar esto, al tener este Gatherle simplemente disparar una acción que
cualquier otra parte de nuestro código pueda escuchar significa que Gatherle no
necesita saber sobre fuegos artificiales y sonidos no
necesita saber sobre la interfaz de usuario, no necesita saber que hay una partitura en la
pantalla ni No le importa nada
de eso. Es solo decir, Oh, ya sabes, soy un pedazo de
queso. Me han recogido. Cualquiera que quiera
saberlo, ya sabes, esta es la cantidad de queso
que se ha reunido
hasta ahora y este trozo de queso
acaba de ser recogido. Eso es lo que dice.
Y a todos los demás, por el
momento, es solo
esta pieza de UI la que le importa. Pero solo, ya sabes, si lo hiciéramos, como, un gestor de sonido, el gestor de sonido pudiera
escuchar podría hacer exactamente esto, podría reunirse y luego
tocar algún sonido reunido. Y entonces eso
automágicamente tipo de trabajo. Entonces es muy agradable. Esto en realidad se llama
un patrón observador
y un patrón de diseño de observador, y es bastante poderoso y definitivamente debería ser la forma que escribes tus UI Si quieres tener una interfaz de usuario muy bien separada
del resto de tu juego. Porque en realidad, cuando tu interfaz de usuario se vuelve cada vez más complicada, a
veces es realmente útil tener toda
la interfaz de usuario, toda tu interfaz de usuario
dentro de una escena por sí sola, y solo hay una escena que contiene toda tu interfaz de usuario. Y así tener este
tipo de acoplamiento suelto entre tu juego y
la interfaz de usuario es extremadamente
útil en ese momento
porque la interfaz de usuario está en su propia escena que
realmente no puede llegar muy fácilmente a nada más. Y así este patrón de observadores
significa que solo puede observar cosas como en recopiladas y actualizarse partir de escuchar
estas acciones que se están disparando.
18. Laberinto Game Over: Bien. Lo siguiente que tenemos que hacer es crear un juego sobre pantalla. Así que vamos a UI y Panel. Ir a nombrar este juego de panel encima. Y queremos algo de texto aquí. Entonces la interfaz de usuario de malla de texto P y podemos Veamos juego. Eso es centro y centro
llama a este juego de texto Bien. Hagamos este panel. Vamos a hacer clic en este
cuadro aquí y conjunto de cuidados, mantengamos presionados el turno y la Opción
o Alt y solo centremos esto. Y entonces podemos
volver al ancho, y yo solo haré 200200
que podría ser suficiente A ver. Bien. Entonces
agreguemos un botón. Así que hagamos clic derecho en
nuestro juego sobre el panel. Ven a, yo y botón de
malla de texto P. Llamemos a esto. Bueno, pongamos el
texto en el botón para decir inicio tan simple como eso. Anclemos este botón a
la parte inferior del panel. Así que cambia y opta de nuevo
y haz clic en este botón aquí. Hagamos este botón un poco más alto,
algo así. Vamos a deshacernos de
la imagen de aquí, así que solo la deshabilitaré. De hecho, cambiemos
este texto para
que sea mayúscula que vamos
a estirar este texto al ancho de nuestro panel, para que podamos simplemente
aumentar el ancho hasta que obtengamos
algo así. Creo que está bien. Bien. Ahora bien, si quieres ver una
especie de mejores artilugios en la interfaz de usuario para cambiar el tamaño de
las cosas en lugar de, quiero decir, solo he
estado haciendo esto, cual es agradable y fácil Pero si quieres ver un
poco más lo que está pasando, en realidad
puedes
este artilugio aquí, que es T. Y esto
te muestra que el tamaño de los elementos de la interfaz de usuario
son un poco más claros Y estas pequeñas flechas de aquí, que muestran ya sabes, si está configurado para estirarse
con el componente o no. Y, ya sabes, cuando están aquí
abajo así, demuestra
que está anclado
al fondo de nuestro panel Entonces eso puede ser muy
útil porque, ya sabes, podemos simplemente cambiar
el tamaño del panel y obtienes los
elementos para moverte con eso Es bastante útil para
diseñar las cosas. Hagámoslo así. Y creo que eso debería hacer. Vamos a cambiar el nombre de este
botón reiniciar. Y agreguemos a UI public void restart game. Y lo que podemos hacer
para reiniciar el juego, la
forma más fácil porque es bastante difícil restablecerlo todo. Pero la forma más fácil de restablecer todo es simplemente
recargar la escena Esa es una
manera rápida y fácil de hacer esto, así que podemos hacer scene manager. Bien. Escena de carga de puntos. Y porque
sólo tienes una escena. De hecho, podemos
usar un cero aquí, pero necesitamos asegurarnos de
que en la configuración de compilación, solo
tenemos una escena
listada ahí. Así que vamos a hacer eso ahora. Entonces, si voy a archivar
y construir configuraciones, y esa es la escena equivocada. Esa no es nuestra escena. Así
que seleccionemos eso y solo presionemos Eliminar y luego agreguemos escenas abiertas, que solo hay una escena, y es nuestra escena principal. Entonces esto es cuando se
habla de escena de carga cero. Este es el cero. Escena indexada aquí, y así eso
cargará esa escena en particular Y solo necesitamos
enganchar ese botón. Entonces si hago clic en el
botón, cuando hacemos clic, va a ejecutar lo que sea que esté aquí y lo que podamos hacer,
haga clic
en esto más, entonces
podemos arrastrar esto aquí. Haga clic aquí y elija UI
restart game. Guarde eso. Y cuando presionemos ese botón, volverá a cargar la escena Vamos a ver que eso sucede. Entonces digamos que muévete
y recoja algunas cosas, y luego si presiono el reinicio, en
realidad
volverá a cargar todo Ahora, aquí hay un efecto
secundario interesante, que es que esto
no reseteó de alguna manera. Entonces este número parece restablecerse ahí porque estamos configurando el texto
manualmente a cero. Pero en realidad, cuando
luego recogemos un poco de queso, lo que está pasando es que esto reunido aquí
no se está reiniciando. Entonces hay una solución fácil para eso. Y la razón por la que no se está
restableciendo
al cargar la escena es porque cargar la escena no está teniendo
un efecto en esta clase. Estas variables de clase,
las variables estáticas no se
ven afectadas por las cargas de escena, y eso en realidad puede
ser muy potente. Es muy útil para mantener el estado en múltiples escenas de
carga y descarga. Se puede mantener el estado en
una variable estática, y no se perderá. Entonces puede ser muy poderoso, pero en este caso en particular, es un poco doloroso
porque es mantener el estado,
mantener el valor de ese
número y no restablecerlo Pero en realidad es una solución muy
fácil porque podemos simplemente al despertar de
estos objetos del juego. Recuerda, podría ser múltiple, así que esto en realidad
se restablecerá reunido varias veces, pero eso no nos importa
demasiado porque solo sucede al inicio
del juego y se reunieron no
importa cuántas veces pongamos reunidos a cero. Viviremos porque
una vez que empiece el juego, se incrementará
y todo está bien Bien. Es un poco basura que nuestro juego sobre la pantalla se muestre incluso
antes de que hayamos comenzado Así que vamos a arreglarlo ahora. Voy a agregar campo aquí. Vamos a llamar a
estos paneles
de juego como una referencia a nuestro juego sobre panel porque básicamente
queremos ocultarlo. Inicialmente, de todos modos, en
despierto activo falso. Mientras estamos aquí, ¿podríamos
también establecer una referencia a nuestro juego sobre texto? Porque probablemente
vamos a querer cambiar esto dependiendo de si morimos por el enemigo o
si ganamos el juego. Entonces por el momento está
diciendo juego por aquí, pero vamos a
querer cambiar esto
a lo que sea que gane gane una cena de pollo o tú ganas o lo que sea, si ganamos el juego. Ahora bien, ¿cómo ganamos el juego? ¿Ganaremos el juego
recolectando todos los recolectores? Ahora, nosotros Nadie has
recogido un Grow ble porque nos hemos suscrito a
la acción reunida aquí,
y que las llamadas manejan reunidas Y obtendremos el número
de bolas recolectadas. Pero en realidad no
sabemos cuál es el número máximo de bolas
recolectadas en nuestro nivel. Tengo dos quesos
en este momento, pero probablemente
voy a tirar algunos más por
todo el nivel Y claro,
podría guardarlo como un campo aquí con el que
se comunique. Pero seamos un poco
más inteligentes al respecto. No tengo que preocuparme demasiado
por ello una vez que esté configurado. Entonces lo que puedo hacer aquí es que actualizaré el puntaje y
luego voy a resolver Es este el cubrible final Entonces, ¿cómo lo soluciono? Total de bolas de Recoge a la izquierda. Entonces esencialmente, cuando
eso llegue a cero, quiero mostrar el
juego sobre pantalla y cambiar el texto para que ganes. Pero, ¿cómo averiguo
cuántos Gatherlls quedan? Bueno, en realidad, tenemos esta cosa llamada
buscar Objetos por tipo. Yo sí puedo reunirnos aquí. Y en realidad queremos
esta segunda opción, que toma si
solo quiero encontrar los objetos activos
o inactivos. Entonces esto es encontrar por Buscar objetos inactivos. Bueno, quiero
excluirlos porque habré hecho inactivos
todos los quesos
cuando haya ganado el juego Entonces eso es todo. Entonces tengo que
hacer este modo de ordenación. Honestamente, no me importa
el tipo de estos frunces. Y entonces eso
me hace retroceder una matriz de todas las recopilaciones que están activas Y solo necesito encontrar
la longitud de esa matriz. Y déjame
moverlo aquí arriba y estirarlo a través
para que puedas ver
todo ese código. Y entonces déjame
repasar eso otra vez. Entonces es encontrar
objetos de por tipo, y es solo esencialmente
los objetos del juego los que tienen el script de recopilar en un nivel muy básico,
eso es lo que está encontrando. Pero estoy excluyendo cualquier objeto de juego
inactivo. Y como viste cuando
recogemos un queso, básicamente
estamos poniendo
ese queso a inactivo. Y así, una vez que hayas
recogido el último queso, en realidad solo serán recolectados
inactivos en nuestra escena Y así, si excluimos
a esos inactivos, esencialmente tendremos cero
regresando de aquí. Déjame depurar esto para que podamos probar
que esto está funcionando. Entonces se fueron capables. Izquierda. Vamos a deletrear bien. Ahí vas. Y entonces si el total de gavles
que queda es igual a cero Entonces, ¿qué
quieres hacer? Queremos configurar nuestro juego de texto para que ganes. Y queremos mostrar
el juego sobre panel. Eso es cierto. Bien. A ver si eso funciona. Primero, tenemos que conectarlos, así que juego sobre panel
Juego sobre panel. texto Juego de texto
terminado. Guarde eso Gas dejó uno. Queda uno. Ahora tal vez no deberíamos
poder
deambular después de haber ganado Así que arreglemos eso, pero eso está
funcionando muy bien, en realidad. Así que vamos a obtener una referencia de nuestro
jugador aquí. Y cuando ganemos. Ahí vas. Nos pondremos en falso.
Porque vamos a cargar la escena cuando comencemos el juego y eso
simplemente restablecerá todo. Jugador. Bien. Ahí vas. Fresco.
Consiguió un estado de victoria, y para reiniciar solo ganamos ganar ganar
porque no tenemos un enemigo que nos detenga. Aún no lo he hecho
muy difícil. Bien, volvamos a poner al
enemigo en el juego. Entonces la idea ahora es que El enemigo nos coja
y debería matarnos. Sí. Y se acabó el juego y
definitivamente no hemos ganado. Así que vamos a arreglar eso ahora. Bien, abramos nuestro guión de IA enemiga haciendo
doble clic en él. Y estamos siendo atacados por el enemigo cuando estamos al alcance
de ataque. Y aquí realmente queremos
decir si subrayamos agente. La distancia restante
es inferior a 0.5 f. entonces vamos
a aceptar el hecho que el enemigo nos ha alcanzado
y nos ha matado. Entonces quieres hacer
algo aquí. ¿Qué aspecto tiene ese
algo? Bueno, volvamos a
invocar una acción. Vamos a crear una acción
estática pública, presione la pestaña para agregar automáticamente usando el sistema. Y entonces vamos a llamar a esta acción sobre jugador atacado. Y así solo queremos invocar
esto cuando nos ataquen. Pongamos ese signo de
interrogación si acaso no
lo hemos conectado por alguna razón. Entonces eso debería funcionar muy bien. Y entonces sólo queremos
encargarnos de eso aquí. Entonces podemos hacer algo como enemigo más jugador
igual. Atacado.
Tomemos esa copia. Pero recuerda eliminar
el método del oyente, y luego queremos
manejar al jugador atacado, configurar un método
que se llame ¿Y qué queremos hacer? Quiero hacer bastante
similar a esto. Queremos mostrar el juego sobre panel y poner al
jugador inactivo. Entonces podríamos cambiar este texto explícitamente
y simplemente decir que pierdes, pero en realidad dice
game over por defecto. Vamos a tener que hacer eso. Veamos cómo se ve eso. Se acabó el juego para intentar
moverte. No se puede hacer clic donde reiniciar. Bien. Oh, casi una
antes de que el enemigo me atrapara. Definitivamente uno
ahí. Ahí vamos. Entonces creo que eso
funciona bastante bien.
19. Prefabricados de laberintos: Bien, así que hagamos un poco de orden
final. Así que vamos a deshacernos de ese juego a través del panel
porque es algo así como en el camino. Entonces ese es el que
configuramos activo o inactivo. Entonces podemos con seguridad solo establecer eso inactivo y eso
seguirá funcionando bien. Reúne las bolas. Ahora bien, no lo sé con certeza, pero supongo que podemos agregar algo más de funcionalidad
a estos reúnen ables. Y si clonar una carga de ellos si duplico
una carga completa de ellos y
los coloco alrededor del laberinto, como que quiero
poder
cambiarlos y cambiarlos a todos, y hay algo
llamado prefab, lo que permitirá
que eso suceda Entonces si en realidad creo
una carpeta, prefabs, Bien. Con en nuestra carpeta Maze. Simplemente eliminemos esta bola de
recolección por el momento. Y luego si arrastro
esta bola de recolección a la ventana de nuestro proyecto y la coloco en cualquier lugar
dentro de la ventana del proyecto, creará un prefabricado Simplemente pasaba que
lo estaba tirando en esta carpeta de prefabs, pero no tiene que estar en
ninguna carpeta en particular Solo el hecho de que lo
hayas arrastrado de la jerarquía a la ventana
del proyecto es suficiente para crear un prefab Y solo dice aquí
Gale prefab asset. Y bien. Déjame explicarte qué hace eso. Entonces, lo que puedes hacer es hacer doble clic en prefab y editarlo solo
el propio prefab Y los prefabricados son útiles
porque puedes Ya sabes, abrir decir otra escena,
crear otra escena, y luego tienes este
gaffer todo lo que
puedes simplemente arrastrar y soltar Entonces son muy útiles para
casi la idea de portabilidad. Lo que en realidad voy a
hacer es que voy a crear un objeto vacío a objeto de juego
y llamarlo reúne Sólo porque me gusta
mantener las cosas limpias. Y vamos a arrastrar eso ahí
abajo. Hagámoslo y
podemos duplicarlo. Y esto sigue siendo un pre fab y no debería estar
anulando nada Y si hago clic en seleccionar aquí, en realidad
seleccionaré el
prefabricado el prefabricado original Entonces déjame
mostrarte cómo funcionan los prefabricados. Entonces digamos por ejemplo, decido que este
colisionador circular es decir demasiado pequeño, quiero hacerlo un poco más grande Bueno, normalmente si
esto no fuera prefabs, tendría que entrar aquí, hacer esto más grande, luego entrar aquí,
hacer este más grande, y todavía puedo hacer eso, ¿ Todavía puedo
entrar aquí y puedo llegar a nuestro planeador circular y
puedo aumentar el radio y decir, quiero que eso sea sobre uno Y luego entra aquí, y ves que eso no ha cambiado, pero yo también podría hacer
esa. Por lo que puedo tratarlos
individualmente todavía no hay problema. Pero lo que ahora dice es que
si hago clic en las anulaciones, es decir
que estoy anulando el colisionador circular
en Si revierto y vuelve a lo que es en el prefabricado
original Entonces es un radio de 0.55,
lo que sea, aquí mismo. Y lo mismo con esto, podría ir aquí y revertir Pero solo para
mostrarte lo que pasa, si cambio el prefabricado original, digamos que quiero cambiar
esto a un radio de 0.7 Y esto también es
lo útil para, ya sabes, si quieres hacer doble clic
y ver cómo se ve eso, puedes hacerlo aquí y 0.7. Entonces es bueno
poder hacerlo algo visual, así. Ahí tiene un asterisco, pero si hago clic lejos, automáticamente
lo guarda. Si vuelvo aquí, éste todavía tendrá un radio de uno, Porque anulamos
el ajuste prefabricado Pero este de aquí, en realidad
obtendremos el nuevo radio de 0.7 porque no has anulado nada
con este Ver, ahí no hay
anulaciones. Y puedes volver aquí y como revertir la anulación, borrar la anulación de alguna manera Si lo revierto,
en realidad volveré al 0.7. Entonces ahora probablemente empiezas a tener una idea de lo poderosos
y prácticos que son los prefabricados, y cuanto más los uses, más encuentras que
son bastante increíbles Así que vamos a lugares
por todo el lugar. Todo bien. Yo sólo estoy
haciendo el comando D aquí, voy a
hacerlos bastante mal Probablemente debería colocarlos
un poco más que esto, pero te lo dejaré a ti. Y claro,
ahora estoy pensando que, sabes, 0.7 como disparador. A lo mejor es demasiado grande,
pero no tengo que preocuparme porque no creo que
ninguno de estos quede anulado, claro, porque
acabo
de colocarlos abajo. Así puedo volver al prefab y cambiarlo de nuevo para que se
acerque a lo que era 0.6, 0.5, algo que era un netbooks lo hacen
0.6, está Y todos estos son ahora 0.6. Entonces cariño tuve que cambiarlo en un solo lugar y cambió todo
el lote de ellos. Tan súper práctico. Bien. Pongamos uno aquí abajo. Duplica eso en realidad
y arrástralo por ahí y duplica eso y arrastra
eso a esa esquina. Arrastrar eso a esconderse un
poco ahí, no importa. Voy a poner uno
en cada esquina
también . Eso probablemente sea suficiente. Estos probablemente necesiten
bajar un poco. Hacer un poco ne. Fresco. Yo no soy ningún tipo.
20. Laberinto viendo doble: Bien. Hagamos un poco
más de retoques. Porque me
parece que el delgado es un
poco lento, un poco por todas partes Y eso es bastante fácil de arreglar. Se ve un poco
borracho en este momento. Como si estuviera
tambaleándose un poco. Rich puede ser muy
divertido tener a un delgado borracho
deambulando por Pero intentemos arreglarlo. Entonces solo para mantener al
jugador en la ecuación, pondré el rango a cero, así que solo va
a deambular Vamos a poner esto en juego
y vamos a ajustar algunos parámetros para ver si
podemos detener ese comportamiento borracho Entonces eso en su mayoría solo viene de estos valores
aquí, en realidad. Entonces Y es super obviamente
si yo wa a subir la velocidad. Entonces, si iba a subir la velocidad, es como si estuviera sobrepasando
y es Oh, querida Realmente es como
un mal conductor de autos. Él es como. Entonces esto se debe a que la
velocidad angular es muy baja, y así es como realmente no
los hace muy eficientes. Entonces, si lo golpeo
bien, entonces. Todavía no está mejorando porque no creo que tengamos
suficiente aceleración. Así que vamos a
subir eso. Ahí vas. Ahora está ardiendo por ahí. Como Bueno, bebí demasiadas bebidas azucaradas. Digámoslo de esa manera. Bien, entonces eso definitivamente es
una mejora. Bastante seguro que la velocidad angular es un problema si eso es
demasiado bajo también. Entonces, déjame solo verificar que ese es el
caso si lo bajara. No parece
tener tanto efecto. Supongo porque no estamos
rotando ni nada así que probablemente no tenga
ningún efecto realmente. Entonces es realmente esta aceleración que fue el problema, así
que eso es bueno saberlo. Bueno, esa velocidad es una locura. Entonces creo que si
lo bajamos a una velocidad más sensata
de digamos ocho o siete, entonces Entonces, en base a eso, todavía
voy a
azotar la
velocidad angular porque no
creo que haga
demasiada diferencia Y voy a golpear nuestra
aceleración hasta 500. Y vamos a jugar un poco
con la velocidad. Entonces hacemos el
rango de ataque a diez. Necesito reiniciar, así que
déjame cambiar eso de nuevo a diez. Entonces viene tras nosotros y C, probablemente queremos que el
delgado sea tan poco
más rápido que nosotros para que realmente
tengamos que
amable no tenerlo. Para que me guste bastante
la velocidad del jugador. Entonces creo que la velocidad enemiga puede ser un
poco más rápida entonces. Entonces vamos a hacer ese seis. Vamos a probar eso. Realmente
me va a atrapar. Si no tengo cuidado. Oh, sí, sí. Creo que ese es probablemente
un reto suficientemente bueno. Entonces, mantengámoslo así. Pero claro,
agreguemos otro enemigo. Y entonces eso va a hacer
las cosas realmente interesantes. Por último, sumémonos a
nosotros mismos otro enemigo. Entonces 'plicar esto. Arrastremos a nuestro
amigo hasta
el lado derecho de la mazmorra Vamos a traer un par de texturas de bloques
más. Voy a arrastrar tres y
cuatro aquí así. Seleccionemos ambos y
arrastrémoslos aquí solo para que obtengamos nuestra animación
y control fácilmente creados. Vamos a entrar aquí. Esto va a ser blob. Paseo Morado. Al igual que así. Entonces eso creó ese
controlador aquí, que en realidad es
cambiemos el nombre de esto a Purple. Y vamos a
hacer doble clic sobre eso. Entonces claro, este controlador, todo lo que hace es ejecutar
esta animación. Así que en realidad no tenemos que
hacer nada elegante aquí. Sólo tenemos que cambiar este
controlador a este enemigo. Entonces este está usando
blob en este momento, pero claro que queremos
usar blob purple Recordemos también
cambiar fotos por unidad
a 256, cumplir. Y vamos a golpear play y a
ver si eso funciona. Sí, pero esa mancha se ve un poco
maníaca porque
solo necesitamos cambiar esto a dos, no muestres la
pendiente justo abajo Ya no necesito esto. Entonces, simplemente eliminemos
eso vamos a usar para crear el controlador fácilmente. Y vamos a renombrarle el nombre a este deporte
enemigo Púrpura. Y por el momento no se ve
púrpura. Quiero decir, cambia
cuando reproduce la animación, pero va a ser un poco útil solo para que se vea bien inicialmente. Entonces eso es solo
arrastrémoslo. ¿Dónde estamos? El ahí vas. Así que ahora estamos morados ahí. Guarde eso. Estoy pensando esto va a ser
bastante duro ahora en realidad. Sí, tengo dos.
Sí, esto es complicado. Esto es bueno, debería ser complicado. Entonces anoté cinco ahí uno, dos, tres, cuatro,
cinco, obviamente. Probablemente ese sea uno
escondido ahí, ¿no? Oh. Sí. Definitivamente no es
bueno en mi propio juego. Mira esto. Esto es bueno. No. Así que fue bueno
jugar la prueba para
asegurarse de que es bastante complicado,
pero tal vez factible Probablemente no sea
el movimiento más grande. Siete ocho, no, no. 9101112. Sí. Bien, genial. Creo que ahí tenemos un juego.
21. Cera: Bien, ahora vamos a conseguir algo de
integración de la cadena de bloques en marcha. Tenemos que sacar
bastantes paquetes. Entonces abramos nuestro gestor de
paquetes. Y los vamos a agregar a través este paquete de instalación desde G URL. Entonces haz click en eso, y
voy a pegar en el primero. Vamos a copiar eso aquí. Pega eso en, y este
es webscket nativo. Vamos a instalar eso. Bien,
vamos a por el siguiente. Esto es EOS sharp.
Vamos a instalar eso. Como éste especifica, es una biblioteca de cliente C sharp
para cadenas de bloques EOS IO. Entonces eso ya está instalado. Vamos a agarrar el siguiente. Pega eso en.
Ese es el ancla Sharp. Como esto especifica,
soporta la billetera ancla. Vamos a agarrar el siguiente. Esto es compatible con la cartera
de nube de cera. Vamos a agarrar el siguiente. En realidad, esta es nuestra última. Bien. Y como éste especifica, es la biblioteca
autenticadora universal Bien, aquí voy a
crear una nueva carpeta, que va a ser una especie
de carpeta específica de cera. Así que voy a
llamar a eso cera. Y aquí dentro, voy a
crear una carpeta llamada escenas. Y aquí dentro, voy a crear una escena y llamarla escena de cera. Y luego voy a hacer
doble clic sobre eso. Entonces, ¿qué queremos hacer primero? Bueno, ya tenemos
algunos prefabricados. Ahora hemos metido
todos esos paquetes. Por lo que la mayoría de ellos residen en esta biblioteca
autenticada universal Entonces si explico esto y
lo encuentras
en la carpeta de paquetes, y vamos a usar los prefabs
de Canvas Entonces solo necesitamos
este en realidad. Así que vamos a arrastrar y soltar. Éste de aquí. Para mantener estos organizados, voy a hacer una
carpeta llamada wax, voy a restablecerla, y voy a
arrastrarlos a todos aquí, que podamos esconderlos
y sacarlos del camino si queremos. Entonces tenemos nuestro lienzo
unidad UA L, Y luego queremos
ir a los autenticadores, y debería haber un prefab
para cada uno de estos Ahora, es un poco confuso
porque tienen uno
canvas uno y uno UI Talkit Y siento que el lienzo uno
es un poco más fácil poner en marcha y la mayoría
de la gente está un poco familiarizada con Canvas. Tú hablo es que es
algo propio. Es bueno, pero está un
poco involucrado. Entonces probablemente nos
vamos a quedar con Canvas para este tutorial
en particular. Para que podamos agarrar esto
y arrastrar esto hasta aquí, y luego aquí, echemos
un vistazo por un minuto. Autenticadores. Sí, queremos el
autenticador Wax Cloud Wallet, así que eso estará aquí aquí
y podamos arrastrar esto adentro Entonces, lo que
esencialmente está haciendo es apoyar un autenticador para la billetera ancla
y un autenticador para la billetera Wax Cloud Ahora, lo que encontrarás
está en el editor, La billetera ancla
funcionará bastante bien. La cartera de la nube de cera no
funcionará en el editor. Y en realidad, incluso si
construyes a GL web
localmente, no funcionará, desafortunadamente. Necesita estar en una página web HTTPS antes de que la billetera Cloud
sea un poco feliz. Entonces eso es algo que me
libera y estoy seguro congeló a bastantes
personas porque no se ha hecho muy obvio que
ese sea el caso, pero no parece
estar funcionando Entonces tan pronto como
lo despliegas correctamente, funciona bien. Entonces ojalá, eso es
bueno saberlo. Echemos un vistazo aquí. Entonces tenemos aquí
esta unidad bastante importante
Canvas UA L script, que especifica el ID de cadena, y este es el ID de cadena
para cera, eso es correcto. Y luego el punto final
que queremos usar. Ahora, descubrí que este
no funciona en este momento. Es posible que queramos cambiar eso, y te mostraré
cómo puedes verificar si estos puntos finales
están funcionando o no. Hay un pequeño
sitio útil que
te dice si estos están
en funcionamiento o no, y este parece
estar caído en este momento. No sé si eso es algo permanente
o no, pero de todas formas. Otra cosa con la que me topé. Si le pego a play, entonces vemos que aquí no
tenemos nuestras opciones, y esto es porque sí necesitamos
configurar algo aquí. Entonces volvamos a desplazarnos hacia abajo aquí de nuevo. Y si abrimos, sí, autenticadores, y vemos que no
hemos configurado nuestros
autenticadores Tiene dos ranuras porque
tipo presume que
vas a usar el ancla, así que voy a arrastrar
eso ahí así, y el de cera La billetera hacha Cloud uno. Entonces eso está configurado ahora. Entonces si vuelvo a golpear play, entonces eso todavía no es suficiente para que las cosas funcionen porque en realidad
tenemos que llamar a
una inicialización sobre esto Entonces sí necesitamos un guión. Así que entremos en
nuestra carpeta de cera. Ya podemos cerrar eso. Así que vamos a crear una
carpeta llamada script. Y aquí dentro, vamos a
crear un guión C sharp, y voy a
llamarlo controlador de cera. Vamos a crear otro objeto de juego y llamarlo Controlador de cera, y vamos a arrastrar el
controlador de cera a la x y vamos a abrirlo. Vamos
a traer espacios de nombre. Entonces queremos biblioteca
autenticada universal y universo o
biblioteca autenticadora fuente Canvas y hagamos un campo serializado, y vamos a hacerlo Canvas AL,
es Canvas Subrayan sobre eso. Así. En realidad, si solo queremos que
esto funcione de inmediato, podríamos simplemente hacer eso.en él. Así. Y eso debería hacer
el trabajo, lo hemos enganchado. Así que la unidad UA L salva la cadera Ahí tienes. Tenemos los dos
autenticadores ahí dentro. Tenemos ancla y
tenemos cartera de nube de cera. La billetera Wax Cloud
no va a funcionar. De hecho, ninguno de estos
va a funcionar porque sí
necesitamos un sistema de eventos aquí dentro. Así que solo agreguemos eso también. Así sistema de eventos UI. Vamos a intentarlo de nuevo. Ahora estos son más felices. Entonces eso no va a funcionar. Vamos a
cancelar que vuelva a entrar. Pero este W. Trae aquí un pequeño código QR
genial. Y lo que voy a hacer es agarrar mi app ancla
wallot en mi teléfono Entonces voy a hacer clic en escanear código QR, y voy a escanear ese signo. Pega mi huella dactilar en él. Sí, creo que estos errores aquí por ese punto
final, no funcionan. Entonces, en realidad, conectemos nuestro evento de inicio de sesión,
y nos duplicaremos. Volveremos a comprobarlo.
Y si falla, cambiaremos ese punto final, y ojalá lo
veamos funcionando entonces. Entonces hagamos todo eso. Entonces abramos nuestro controlador
de cera. No necesito este método de actualización. Voy a borrar eso. No necesito ese comentario
para decirme qué hace el inicio. Y aquí, voy a conectar una
U
un U método de inicio de
sesión a esta acción aquí. Entonces, lo que sucede es cuando el
usuario inicia sesión con éxito, esto se dispara, que
luego ejecutará este método de inicio de sesión de usuario. Pero sí necesito crear
este inicio de sesión de usuario. Así que puedo hacer una solución rápida aquí. Eso es algo así y solo puedes decir generar método
para iniciar sesión de usuario, y es una especie de talones un
método para ti así Eso tiene semicon aquí. Entonces, ¿qué quiero hacer
cuando el usuario inicia sesión? Bueno, sí quiero averiguar el
nombre de la cuenta que acaba de iniciar sesión. Entonces puedo hacer eso haciendo
obtener el nombre de la cuenta así. Porque
lo esperaba, puso esto una sincronización
automáticamente porque si estás esperando
dentro de un método, tienes que tenerlo tiene que
ser un método A sync Y si antes no te has topado con
un peso, esencialmente, lo que sucede es que esta línea
no irá más allá esta línea hasta que esta
haya
regresado con éxito con un nombre de
cuenta o haya fallado. Y Pero no bloquea toda
la aplicación. Eso es
lo bueno de un peso es que otras cosas pueden continuar. Es solo una forma eficiente esperar
a que algo
suceda antes de continuar porque no quieres
ir más lejos en este método hasta que
tengas un nombre de cuenta. Entonces voy a
depurar g. Y
voy a decir algo así como el usuario A L. Vamos a mostrar esa variable así. Esto debería funcionar ahora. Entonces en un inicio de sesión exitoso, esto así que corre, y deberíamos ver en la consola este mensaje
con el nombre de la cuenta siendo lo que sea que haya iniciado
sesión como car hit play. Haga clic en el ancla.
Vamos a escanear esta señal. Ahí vas. Entonces me
ha encerrado, pero no ha podido
obtener el nombre de la cuenta, y creo que en ese momento, está tratando de
usar ese punto final. Entonces arreglemos eso a continuación. Bien, entonces dije que iba
a arreglar ese punto final. Pero probemos que ese
punto final es el problema. Así que he venido a este sitio
bastante genial. Se trata de puntos finales de herramientas de cera, y esto esencialmente enumera
todos los Npoints API de cera Mint Y como pueden ver, hay signos de
exclamación contra los que no funcionan Hay muchas garrapatas, pero hay una extraña
que no está funcionando. Eso es en realidad un IPFS Sí. Pero si recuerdas con razón, el
nuestro era el que estaba
usando eran los líquidos. Si hago un comando F y solo empiezo a escribir
líquido así,
entonces puedes ver que está saltando aquí
abajo y tiene
un signo de exclamación que dice
mal estado de puerta Entonces definitivamente, eso no
está funcionando. Entonces, ¿cuál elegir? Bueno, en realidad no
lo sé. Yo sólo voy a elegir
el de arriba aquí. Pero es posible que desee
hacer su investigación y preguntar por ahí para ver cuáles son
los mejores para
usar en este momento. Pero creo que este
top es bueno. Suecia, en realidad, bastante gracioso, cera Suecia parece
bonita en la pelota, así que probablemente sea seguro usar también si
estás en Europa. Pero de todas formas, voy
a usar esta. Entonces vamos a copiar eso. Así que
solo lo seleccioné y copié. Entonces voy a volver aquí. Voy a volver
a este Unity Canvas AL. Ven aquí abajo. Y yo sólo voy
a pegarlo aquí. Entonces donde dice, API. No quiere este HTTP ni nada por el estilo
en el frente aquí. Sí quiere
conocerlo en el campo anterior, pero solo sé consciente de
eso porque en realidad. Porque lo copié y pegué, se va a pegar
eso en el frente. No quiere eso. No está contento con eso, así solo
tienes que quitártelo. Así que voy a salvar eso. Creo que ya es suficiente, y vamos a golpear play de
nuevo y comprobarlo. Así que de nuevo, Aquí ancla. Recoge mi celular
con la cartera ancla puesta. Haga clic en escanear QR. Ven aquí. Sostenga el teléfono hasta la pantalla. Signo de clic. Usa mi huella del pulgar
para identificarlo. Ahí vas. Es más feliz. Entonces ese punto final fue el tema. Y ahora tenemos un
mensaje aquí diciendo, usuario Platón GM ha iniciado sesión, y esa fue la billetera con la
que me conecté. Entonces eso está funcionando bien.
22. Cera atómica: Bien, entonces en realidad
queremos traer
otro paquete ahora. Así que vayamos a Window
Package Manager, y igual que de costumbre, instalemos el paquete desde G URL. Vamos a pegar este en. Entonces este es el cliente de API de
activos atómicos. Así que vamos a instalar eso. Entonces este
paquete de activos atómicos nos permitirá ver lo que un usuario tiene
en su billetera, respecta a las
NFTs, y otros tokens, por
supuesto, pero en este
momento estamos
interesados principalmente en las NFTs Entonces eso va a
ser súper útil. Tengo algunas áreas aquí, pero no creo que
sean importantes. Licencias, sin metopile Vamos ver si podemos
eliminar eso para que no se queje de
ello Ahí vas. Activos atómicos. La licencia no tiene metafila. hay un archivo de licencia Aquí hay un archivo de licencia que creo que solo
podemos eliminar. Así que vamos a borrar eso solo para que Eric
se vaya como que. Vamos a aclarar eso. Derecha. Debería estar un
poco más feliz Realmente hicieron que
probablemente no te molestes en hacer eso. Fresco. Derecha. Veamos cómo
usamos este nuevo paquete entonces. Así que vamos a entrar en
nuestro controlador de cera. Entonces voy a
crear una función. Llamémoslo tarea obtener todo de la colección. Voy a
pasarlo en una cadena, que es el nombre de nuestra colección. Ahora, necesitamos
construir algunos parámetros. Llamemos a esto
activos para abreviar, hagamos nuevo activo Bien. Ese de ahí lo estoy buscando. Entonces si selecciono eso y hago tabulador, eso traerá ese uso. Sí, ahí tienes. Sí, ahí. Entonces hagámoslo. Y vamos a
construir nuestros parámetros. Por lo que queremos especificar el dueño que. Interesado en. Entonces ese sería Platón GM Platón GM. Entonces estoy buscando cualquier cosa
que sea dueño de Platón GM. Pero sí, no quiero
traer de vuelta todo. Así que
puedo hacer con nombre de colección. Y voy a pasar ese nombre de
colección desde aquí. Entonces voy a tener
que pasar eso. Esto está codificado duro
en este momento. Sólo voy a poner un
gran cambio junto a eso, así que no me olvido. Porque no lo
quiero codificado duro. De hecho, para ser honesto, probablemente
pueda
mandar eso de inmediato y llamarlo ahí. Sí, hagámoslo. Entonces iba a hacerlo en pedacitos, pero estoy
seguro de que podemos hacer todo esto de una sola vez.
Entonces hagámoslo. Y entonces podemos
pasarlo, lo cual es genial. Podemos obtener los datos de
recopilación solo hacer datos de recopilación es igual a ponderar esto
porque esto va a salir a la web y tirar esto hacia abajo así que podría
tomar un poco de tiempo. Utilizamos esta versión de fábrica de
API de activos atómicos uno, que es la versión uno de
la API que está usando. Voy a usar la API de activos, que parece súper flexible, y luego los activos y
enviarle los params de activos Y luego voy a hacer un bucle de cuatro. Entonces, si apenas empiezo a escribir cuatro, luego flecha hacia abajo hasta aquí, presione tab,
llenará un bucle de cuatro para mí. Yo es bueno. Datos de recolección. Quiero ir a través de
toda la matriz que vuelve. De hecho, tiene que ser la longitud de
los datos, así, y simplemente construir una
cadena de información es igual a. Y en realidad, lo que voy a hacer es Primero que nada, metamos esto en La cosa así. Y luego vamos a construir
una cadena a partir de esa información. Y por el momento,
vamos a obtener el ID de activo porque eso siempre va a
existir en este ID de activo, y vamos a desbog Para que pueda hacer debo ID de activo. Fresco. Bien, llamemos a este método después de que hayamos iniciado sesión
con éxito. Entonces voy a hacer una espera, obtener todo de colección. Voy a usar el
nombre de la cuenta
con la que he iniciado sesión y El nombre de la colección. Sucede que sé que tengo tres NFTs de esta maravillosa colección
llamada Platón evolucionó Entonces eso debería ser suficiente para que veamos tres ID de
activos próximos, uno para cada uno de mis NFTs Bien. A ver si eso funciona. Voy a hacer clic en ancla, voy a escanear QR, escanear señal de éxito de impresión. Y ahí tienes. Tenemos
tres identificaciones A regresando. Entonces eso parece que está funcionando. Ahora bien, si quieres ver los
datos que están regresando, en realidad
puedes venir
a esta página aquí. Activos atómicos de la API de cera, y esto realmente
te permite, tendrás que hacer clic. Comienza así. Necesitas hacer clic, probarlo. Usted quiere bajar a
esta línea de buscar activos aquí. Y nombre de colección,
Platón evolucionó, filtrar por dueño,
que es Platón gM. Bajemos aquí. Nada más. Así que
solo presiona Ejecutar. Y si nos desplazamos hacia abajo, puedes ver nuestra respuesta. Lo cual es muy práctico. Así
que esos son los ID de activos. De hecho, si muevo
esto un poco, ese ahí es
ese de ahí. Y si bajamos. Ahí vas. Ese es
el siguiente. Pero cada uno obviamente tiene
bastante información. Pero lo que realmente nos
interesa es un poco más abajo. En realidad está dentro
de la plantilla. Um, tenemos estos
datos inmutables dentro de la plantilla. Y ahí dentro,
tienes IMG, creo que en el código, lo
llama imagen y nombre, y eso es lo que
queremos sacar. Entonces esto de aquí, no
parece una imagen. En realidad es que este es un
identificador único en el IPFS, que creo que significa sistemas de archivos
interplanetarios Me volví loco
así. Te voy a mostrar todo sobre eso
un poco más tarde. Pero solo para mostrarte que
puedes usar este sitio para probar y ver los datos que estás
recuperando de estas llamadas a la API.
23. Interfaz de usuario de NFT con cera: Entonces, en realidad quiero
esconder todas estas cosas, tan bien que las puse
dentro de una carpeta, ¿verdad? Eso fue pensar en el futuro. Así que ahora puedo esconder
eso por el momento y trabajar en lo que
quiero mostrar aquí, que es cuando hemos iniciado sesión
y hemos
bajado los NFT de la cartera, sería bastante amable si
mostraran aquí una imagen y tal vez
muestren el nombre Creo que probablemente sea
suficiente para seguir adelante. Entonces hagámoslo. Déjame crear otro lienzo. Al igual que así voy a hacer la
escala estándar con tamaño de pantalla. Hazlo a 0.5, 800 por 600. Eso es todo bastante
bueno. Bien. Entonces tenemos un lienzo que
va a jugar muy bien. Y a partir de aquí, vamos a hacer botón. Porque si lo piensas bien, solo
queremos presionar en cualquier NFT que queramos entrar
y jugar el juego Entonces habrá un
ratón, un gato y un perro, cualquiera que sea el que
juguemos, hacemos clic en, entraremos y jugaremos como ese
NFT, lo cual es algo genial Entonces aumentemos
nuestra altura 260,
así, agreguemos una imagen a nuestro
botón a la imagen de la interfaz de usuario. Vamos a bajar eso un
poco hacia abajo así. Vamos a darle una especie de sprite
base aquí, veamos. Busca algo así
como fondo. Sí, sólo una
cajita como esa. Lo reemplazaremos, pero sólo para poder
ver qué está pasando. Y voy a poner, vamos a ver. Yo lo hago s, hazlo simple
preservar relación de aspecto. Así que eso va a hacer porque
vamos a borrarlo de todos modos. De hecho. Veamos qué más podemos usar para esto. Oh, ahí tienes. Algo así que es
un poco mejor. Bueno. Fresco. Y luego para el texto, voy a cambiar el nombre de esto y realmente no puedo ver
lo que está pasando ahí. Dónde se esconde. Así que vamos a hacer clic. Desplazar una opción. Pongámoslo a la
cima así y luego reduzcamos la altura a
algo sensato como eso. Eso va a hacer, creo. Pero voy a crear un
script para que sea más
fácil actualizar este botón. Así que voy a ir a scripts, hacer clic en Crear guiones nítidos en C, y voy a llamar a
esta interfaz de usuario subrayado NFT Y haga doble clic en él. Y luego voy a hacer un campo
serializado, privado. Y hago una malla de texto PG hit tab, así que agrega el uso de TM
pro en la parte superior ahí. Y voy a llamar a
este nombre de subrayado. Y luego quiero otra, campo
serializado, imagen
privada esta vez Y no le pegues a Tab inmediatamente porque queremos
este de aquí en realidad. Es un poco molesto
que por defecto sea éste. Queremos esta
interfaz de usuario del motor de unidad'. s tab ahí y agregará la correcta se puede
llamar a esta imagen cuadrada. Así, y después
deshazte de este comentario, deshazte de la actualización, y voy a estar nombrando
esto para establecer NFT, así Esto solo tomará nombre
y otra cadena, que es la URL de la imagen. Entonces, el nombre es fácil. Podemos simplemente asignarle eso
así. Así. Y la URL de la imagen no es tan fácil, tenemos que hacer sprite de imagen
es igual a algo Entonces, por el momento, solo hazlo nulo porque necesitamos
crearnos algo que pueda
tirar hacia abajo una imagen del sistema de
archivos interplanetario No es demasiado difícil. Vamos a hacerlo. Entonces, si hacemos Una tarea. Hagamos tab para traer en
el sistema las tareas de enhebrado. Sprite Sprite Una sincronización es un
buen nombre. Eso es bueno. S T es la URL de la imagen. Entonces queremos hacer
algo como esto. Unity web request
texture, que está ahí. Bueno. Eso traerá en
Unity un nuevo motor de redes. Y tenemos esta textura muy
útil para obtener, que solo podemos pasar en una URL, y es casi tan
simple como eso. Todavía no estamos del todo, pero es bastante impresionante que
podamos simplemente hacer eso. Entonces podemos hacer solicitar
enviar solicitud web. Lo que esencialmente hemos
hecho es que hemos creado una solicitud web y luego
ahora estamos enviando la solicitud web. Y entonces en realidad tenemos que jugar un poco los pulgares
hasta que se haga la solicitud Así que estamos haciendo está hecho. Y lo que puedes hacer es
que se vea complicado, pero en realidad no es
todo lo que está haciendo es esencialmente no
hará nada hasta que
se establezca la solicitud, que es algo que
sucede mágicamente detrás escena cuando
recuperamos la textura Y entonces podemos Y estoy
usando muchos vars aquí. No estoy muy seguro de haberlos
usado antes. Vars son Es como
taquigrafía porque voy a rellenar esto porque realmente
no puedo molestarme en escribir el tipo
adecuado que necesito Entonces, como que
lo descifra a partir del contexto, el tipo de esta
textura va a ser. Yo sólo un poco práctico. Sé que a veces
hace que las cosas sean un
poco difíciles de leer. Pero es un poco útil. Si no quieres seguir
escribiendo tipos todo el tiempo. Para que obtengamos la textura de la
petición que regrese. Y entonces esto es un poco
interesante es que Esta es una textura dos D, creo. Déjame solo, sí. Yo me cierro sobre eso, me
voy a decir, en realidad, lo que piensa que va a ser
la var Así puedo reemplazar esa
textura dos D así, y luego eso la hace un
poco más explícita. Un poco más escribiendo, pero
probablemente más limpio realmente. Puedo pasar el cursor sobre
esto, y esto es como peticiones web de unidad Entonces puedes ver que estos
vars son un poco útiles. Quiero decir, varing a un sprite es algo inútil
porque eso es Así que no te ahorra nada y así que bastante inútil Así podemos crear un sprite a partir de una textura usando
sprite do Y luego podemos
hacer textura y
tenemos que poner en el
tamaño de la textura. Pero eso es más fácil de
obtener de la textura, se siente un poco inútil, pero es lo que es Y entonces creo que
este es el pivote, que amable solo queremos
establecer en el medio. Entonces eso va a ser dios, eso será uno vector Vector dos, perdón uno multiplicado por 0.5. Esa es probablemente una manera fácil
de hacerlo o simplemente puedes hacer nuevo vector 20.5
co 0.5, de cualquier manera Entonces esto parece ambiguo Bien. Entonces puedo alias ambus o eso. Hagámoslo porque
eso es bastante genial. Entonces creo no
creo que eso sea lo que quiero. Vamos a intentarlo de nuevo. Es Unity motor de
vector dos que quiero. Sólo tienes que escribir en un
motor unidad vector dos. Ahí vas. Feliz
ahora aparte de aquí. Eso lo explicaré en
un segundo, en realidad, porque eso es un poco raro. Bien. Yo
saqué numéricos aquí. Déjame
comentarlo y ¿es feliz? Sí, pensé que
era un poco inusual Vector dos se quejara. Entonces los números estaban
ahí por alguna razón. Pero esto puede ser un poco útil porque si
tienes una ambigüedad, si tienes un vector dos en dos espacios de nombre y estás usando ambos espacios de
nombre, entonces por supuesto, no
sabe si el vector dos es de este espacio de nombres en
particular u otro
que estés Entonces puedes eliminar la ambigüedad
especificándola así Se puede decir usando vector dos, lo que quiero decir es unidad
motor vector dos. Entonces eso es un poco práctico, pero superfluo porque
no necesito el numérico Así que eso se ve bastante bien. Entonces lo que podemos hacer ahora es, esperar, obtener una URL de
imagen de sincronización, así. Y queremos que esto sea público porque se
quiere llamar a esto. Lo que eso hace es que
vamos a llamar a esto en realidad desde
el Controlador de cera. Vamos a llamar a
esto y lo vamos a mandar con el nombre, que probablemente va
a ser gato, perro, lo que sea. Y una URL de imagen, sí, en realidad, pensando en ello, esto no está del todo bien, porque sí necesitamos
en el frente para concatenar el sistema de
archivos interplanetario Así que voy a pegar
eso de alguna parte porque déjame ver. En realidad no se puede tener
que usar este en particular. Hay muchos puntos
finales de IPFS que
puedes conectar aquí Y porque la URL de la imagen, que en realidad es, quiero decir, debería decir que esta no
es la URL de la imagen, es como la
llamaría ID IPFS Entonces, supongo. Yo sí. Entonces esta es en realidad esa gran cuerda
que te mostré antes. Entonces es como una identificación única. Sí, probablemente sea un UID. Así que vamos a obtener
una identificación única aquí,
y así que en realidad
pero cuando hacemos esto, se pone sprite,
queremos una URL adecuada Y así al hacer esto más el ID único de IPFS,
eso debería ser suficiente Y en realidad
lo ha demostrado, ¿verdad? Así que copio eso. Vuelvo a
sí, ahí tienes. Entonces si pego en eso
ahí, lo cual no sé. Sí. La llave no puede estar vacía,
así que no es suficiente. Tomemos eso.
Vamos a copiar eso. Yo regalo un poco el juego aquí, pero de todas formas, es bueno. Entonces ahora he pegado
en ese ID de IPFS. Y espéralo. Dedos cruzados.
Sí. Ahí vas. Consiguió a nuestro gato. Así que eso es algo genial. Entonces esto es lo que
vamos a esta es la cuerda que va a ser lo que esto termina
siendo todo esto. Así que eso es genial.
Regresemos aquí entonces. Y realmente ya no
necesitamos ID de activo, así que hagamos este nombre. Y dijimos, ¿no lo
hicimos que estaba en plantilla punto inmutable
data nombre de punto Creo que eso es lo que dijimos y imagen de
cadena es igual a plantilla de punto de
datos
otra vez imagen de punto de datos. Era IMG, pero creo que en el tipo de tipo de
datos aquí, lo
están haciendo imagen Entonces esa debería ser la URL de la imagen. Vamos a hacer nombre más URL, solo para que podamos ver eso. Pero sigamos adelante y descubramos qué
vamos a querer hacer aquí. Bueno, vamos a
querer usar un pre fab. Para usar un prefab FFT para crear una instancia UNFT entonces vamos
a querer establecer NFT Con nombre Y luego vamos a
querer configurar la prevención que configuró el
evento en el botón. Fresco. Hagámoslo a continuación. Bien. Tenemos esto
subrayo guión NFT. Queremos
arrastrar eso a nuestro botón. Queremos que el nombre del texto esté ahí. Queremos que la imagen esté ahí. Llamemos a esto. Yo lo
llamo botón NFT. Y vamos a crear una
carpeta llamada pre abs, y vamos a arrastrar eso ahí
adentro así que bien. Y luego en el controlador de cera, dijimos que necesitamos crear
una instancia del prefab, así que vamos a
necesitar ese prefab Así que vamos a hacer objeto de juego privado. Subrayar lo va a
llamar un prefabricado FT. Y también saber que también
sabemos que vamos a necesitar un padre del padre
de los NFT, lo siento. Bien, eso es bueno. Así que arrastramos de los prefabricados. No lo arrastre desde
la vista jerárquica. Arrástralo de la
carpeta del proyecto porque es un prefab. Y entonces
aún no
tenemos a este padre porque pasemos por alto
lo que queremos hacer Vamos a querer
tener múltiplos de estos, ya
sabes, y
no queremos que se
apilen uno encima del otro, los
queremos uno al lado del otro. Entonces voy a
crear un vacío aquí. Voy a estirarlo
por el medio, así. Se estira con el
ancho de nuestra vista de juego. Voy a llamarlo NFT parent, solo para hacer las cosas obvias, y voy a agregar un grupo de layout
horizontal, y voy a unt estos y voy
a hacer middle center Loco, ¿eh? Pero lo que eso hace es si arrastro y suelto
estos aquí ahora, B. Niza. Todo dispuesto
para mí en una fila, que es exactamente lo que quiero. Entonces lo que puedo hacer ahora es arrastrar a
este padre NFT hacia aquí, y puedo usar eso para poblar esto con
tantos de estos como quiera Entonces, permítanme
borrar uno de ellos. Voy a hacer click,
pero voy a borrar estos en código. Entonces solo para demostrar
que
los estoy limpiando y agregando más
porque habrá tres. Estos se eliminarán y
luego se agregarán algunos más. Haremos todo eso
en código ahora mismo. Deberíamos aclararlo.
Podemos aclararlo aquí afuera. Entonces, si lo hago por cada niño de transformación en guión bajo NFT padre
parece un poco duro, pero definitivamente quiero destruir
al Un poco megalmnia mía, pero esto es lo que hacemos Y si solo golpeo si solo le
pego inicio bien juega ahora, entonces verás desaparecer a
estos dos. Ojalá, creo que lo hemos enganchado todo. Entonces, si hago eso. Sí. Ahí vas. Desaparecen. Porque es bastante agradable
tener algo mostrando aquí, solo para recordarnos que
esto es algo así como lo estamos haciendo en código porque
si solo borro estos, entonces es un poco complicado
de ver Bien. Algo está pasando, ¿verdad? No sé, preferencia realmente. Pero sólo me gusta que
me recuerden eso Oh, sí. Lo que voy a
estar haciendo en código es llenar a este
padre NFT con algunos botones, y así es más o menos
lo que va a parecer Entonces es un poco agradable. Así que no está de más
aclararlo en código. Derecha. Así que volvamos a
nuestro controlador de cera. Entonces estoy limpiando estos. Y luego aquí abajo. A ver. Quiero instanciar cosas. Entonces NFT es igual a instanciar prefab y
pegarlo pegarlo Bonito trazador de líneas, brillante. Entonces eso en realidad
va a crear uno de estos botones y pegarlo. Aquí, por cada
NFT que tenemos. Y veamos, tenemos este componente
UI subrayado Tenemos este componente de script. Entonces llamémoslo así. Vamos a conseguir que consiga componente porque queremos que eso sea capaz de ponerme
por delante de mí aquí, subrayo NFT set NFT Bueno, yo uso el nombre y
la imagen que. Bien. Y luego queremos
enganchar el botón. Entonces puedo hacer botón. Podría haber hecho
esto en este UI NFT. Esa sería otra manera tal vez
mejor de hacerlo, pero vamos a vivir
con lo que tenemos, componente
FTG botón de componente
FTG y yo solo voy a
hacer botón al click Agregar diez. Puedes hacer una
función de flecha como esta, cual es genial para configurar lo que quieras hacer al hacer clic y simplemente
puedes ponerlo aquí. Sólo voy a depurar. Por el momento, de todas formas, el nombre para que podamos demostrar que sabemos a qué
NFT hemos presionado Pongamos estos
en el lugar correcto. Entonces, ¿qué fue eso?
Ese era el nombre de dos. Sí, y configuramos el evento
en el clic del botón, que fue lo que hemos hecho ahora. Fresco. Sí.
Veamos qué pasa. Siento que me falta algo porque
eso fue muy fácil. A ver. A ver. A lo mejor me falta algo. Ah, bueno, lo que me falta
es volver a mostrar esto de nuevo. Ves que esto se interpone en el camino. De hecho, podría, ya sabes, encender
eso en código, lo cual podría hacer, en realidad. Vamos a probarlo primero
de todos modos. Entonces, Anchor. Escanear, firmar. Bueno, tenemos nuestro gato,
tenemos nuestro ratón. Oh, iba a decir, ¿por qué odia tanto
al perro? Pero no lo hace.
Los tenemos a todos. ¿Qué tan genial es eso? Y si hago clic en
Gato, me sale gato. Si hago clic en perro, me sale perro y si
hago clic en el mouse, me devuelve un mouse
para mis problemas. Entonces eso es genial.
24. Reproductores de cera: Bien. Bien. Estoy de vuelta
en la escena principal. Así que abrí
la carpeta Maine. Así que abrí la carpeta
Maze y me he metido en escenas y he hecho
doble clic en Escena principal. Sólo voy a decir
que si escuchas agua y lluvia y truenos
en el fondo, no
es porque haya agregado una banda sonora atmosférica
a este curso, es porque
está sucediendo afuera. Ojalá el micrófono no lo
recoja demasiado. Ahora, ya no
solo tenemos un ratón, sino que tenemos un gato y un
perro con los que puedes jugar. Tenemos que hacer que eso suceda. En primer lugar, vamos a traer
las nuevas texturas. Voy a dejarlos caer en
nuestra carpeta de texturas Bien. Y bueno, ¿cómo
vamos a hacer esto? Bueno, cuando abramos
la escena principal, vamos a saber si
en la escena anterior, si el jugador ha
hecho clic en un ratón, un gato o un perro para jugar Así que tenemos ese nombre, y queremos convertir ese nombre
a lo que carguemos
para jugar en el juego. Ahora, en realidad hay una manera bastante
ordenada de hacer esto. Entonces lo que podemos hacer es entrar en laberinto y
podemos crear una carpeta
llamada recursos. Que es una
carpeta especial y puedes soltar prefabs aquí y luego
cargarlos en un script Entonces déjame mostrarte cómo sería
eso. Si tomo esto y me deja solo lo
voy a llamar mouse y vamos a
arrastrar esto a esa carpeta de
recursos, y luego vamos a desactivar esto por el
momento, guárdalo. Entonces vamos a crear un script
que cargue esto en Okay. Entonces voy a crear un script de controlador de
juego. Entonces creo un objeto de juego
para ponérselo y luego en guión para crear un guión nítido, y
lo voy a llamar controlador de juego. Haga doble clic en eso.
Deshazte de mi consola, y deshazte de este método de
actualización. Deshazte de esto. Entonces hagamos
algo como objeto. Ab es igual a, y entonces podemos hacer carga de
recursos. Esto va a cargar cosas
del orden de recursos. Quiero cargar un objeto de juego
y quiero cargar Bien. Eso es bastante útil
porque vamos a saber si han hecho clic
en ratón gato o perro Todo lo que tenemos que hacer es
nombrar
correctamente el objeto del juego , y estamos bien para ir. Bastante fácil. Ahora
tenemos el prefab, necesitamos
instanciarlo para que finalmente podamos
hacer suficiente
instanciar finalmente podamos
hacer suficiente
instanciar Agradable y fácil. Entonces
veamos si eso funciona. Asegúrate de que lo he
dejado caer aquí. No, no lo he hecho. Hagámoslo. Déjame guardar el juego. Y tenemos un ratón. Bien. Eso funcionó muy bien. Así que podemos eliminar eso
en realidad. Eso está bien. Ya no necesito eso. Ahora bien, esto puede arrojar un error porque tenemos variables de excepción
no asignadas
sobre ¿en qué tenemos eso? Mi IA para desplazarse hacia abajo a veces, porque me está diciendo que la variable del jugador lo
dice aquí en realidad. Entonces probablemente necesites asignar la variable jugador del guión
enemigo en el inspector. Entonces, como que te dice exactamente
lo que tienes que hacer. Bien. Bien, entonces tenemos un
pequeño problema en
que nuestro guión de IA enemiga presume que sabemos
cuál es nuestro jugador Y antes solo podíamos
arrastrarlo y soltarlo aquí. Pero ahora lo estamos instanciando, y así no tenemos jugador
inicialmente Y también el script UI
tiene ese problema también. Entonces el script de UI es bastante
fácil de arreglar, creo, en eso
solo podemos reemplazar esto
aquí para que podamos eliminar esto donde quiera que diga jugador, simplemente
podemos hacer algo
como encontrar cualquier objeto por tipo jugador objeto de
juego así. Probablemente queremos
asegurarnos de eso porque no nos importa si se trata de un objeto
inactivo o activo. Definitivamente queremos
encontrarlo bajo todas las circunstancias. Entonces encontrar objetos inactivos
incluyen y luego tenemos esto En realidad, es suficiente? Déjame solo verificar dos veces. Bien. Eso es suficiente para que eso
funcione, ojalá. Por supuesto que no
tenemos un modo sort porque solo estamos encontrando un juego ob object
by type objects. Entonces vamos a copiar eso. Vamos a pegar eso ahí dentro
y descomentarlo. Y ojalá eso
arregle eso. Creo que podemos hacer
algo similar por la IA enemiga. Pero bien. No sabemos exactamente cuándo se
va a instanciar al jugador Quiero decir, es más o menos al inicio, pero este arranque podría estar corriendo antes o después del
inicio en nuestro control de juego. En realidad tienes un poco de
control sobre eso, pero normalmente no es buena idea preocuparse
demasiado por eso. Entonces lo que podemos hacer es que tenemos
aquí a este jugador. Podemos probar si es nulo, inicialmente lo
tendremos como nulo, y no lo
serializaremos realmente
porque y explícitamente lo
establecemos en null Entonces podemos hacer algo así como subrayado jugador
es igual a null, entonces vamos a ejecutar
este código aquí, y vamos a tratar de pegar aquí, encontrar cualquier objeto por
tipo plan transformar Bien. Y quizá no
esté más feliz de esto
porque esto podría fallar Entonces, encontrar una transformación de un
nulo probablemente sea una mala idea. Puedo ver si una pregunta arregla eso para nosotros.
Veamos cómo le va eso. Jugar. Eso en realidad parece
funcionar perfectamente bien. Deshagámonos de estos
registros de distancia porque
eso es simplemente molesto. Sí, vamos a deshacernos de eso. Y vamos a intentarlo de nuevo
solo para asegurarnos. Pero creo que en realidad
es feliz. Ahora, hay una especie de 1,000,001
formas de arreglarlo. Probablemente cuando se instancie al
jugador, podrías dar inicio una acción que suceda y
ellos puedan escuchar Probablemente sería una forma un poco
más agradable de hacerlo. Pero sí, eso está funcionando bien. Bien, pongamos a
nuestro gato y a nuestro perro. Entonces voy a
duplicar nuestro ratón, y voy a llamar a este gato. Y voy a hacer doble clic en eso. Cambiemos el nombre de esto
a animador de gatos. Bien. Ahora tenemos este reproductor
controlador. Y va a
ser un poco doloroso dejarme hacer doble clic en
eso, hacer doble clic en eso. Sí. Va a
ser un poco doloroso reproducir este controlador
otro par de veces. Y luego imagina que
quieres aún más personajes. Puedes tener que cambiarlos, conectarlos de nuevo, todo
este tipo de cosas. Va a ser un
dolor. Entonces, en realidad hay una
manera más fácil de hacer esto. Lo que puedes hacer es
que nosotros podemos entrar aquí. Podemos hacer clic derecho para
crear el controlador de
anulación de animación. Llamemos a esto CT. Y podemos arrastrar a nuestro
reproductor aquí, nuestro controlador de reproductor aquí. Y podemos
anularlos con las
animaciones para el gato. Entonces lo que podemos hacer
es que voy a duplicar el ídolo del jugador, y voy a
llamar a esto Cat Idle. Voy a duplicar
al jugador caminar y llamar a esto Cat walk. Ahora bien, estos podrían
llamarse mejor mouse idol
y mouse walk. No me voy a molestar, pero definitivamente algo que
tal vez quieras limpiar. Pero voy a arrastrar al ídolo de
gato ahí. Gato entra ahí. Y eso es algo que se
explica por sí mismo, ¿verdad? En lugar de hacer el
ídolo jugador o el ídolo del ratón, va a hacer el ídolo gato. Entonces va a
cambiarlos, lo cual es algo genial. Pero tenemos que usarlo. Por lo que tenemos que hacer clic
en CT Animator. Y en lugar de usar
el controlador del reproductor, queremos usar este controlador CT
Override aquí. Y luego podemos
hacer doble clic en CT Idle. Abre eso. Y creo que
deberíamos poder, déjame ver, pero deberíamos poder arrastrar y soltar esto a
eso Sí, ahí va. Así que he reemplazado esa
animación ociosa por el gato. Y vamos a hacer un paseo de gatos. Así que recuerda que empezamos con call, con mouse dos nos
pondríamos empezando con. Entonces cuando empiezo con el
gato dos, y el gato uno. Y creo que eso debería
ser bastante feliz, y probablemente podamos simplemente
intercambiar el real. Este sprite aquí con gato
uno también. Ahí vas. Si solo lo arrastro, podemos volver a nuestra escena, podemos ver que ese es nuestro
gato, es demasiado grande. Necesitamos si
miramos nuestro ratón, es 256 y todos estos
van a ser 100, cambiemos eso a 256. Vamos a aplicar. Sí,
eso se ve mejor. Eliminemos eso en nuestro script de controlador de
juego, solo
probemos usando CT ahora. Vamos. Vuelve aquí. gato en recursos, por
lo que debería encontrarlo. Vamos. Estás en esta. Podría pasar. No. O no. Bien. Fresco. Vamos a hacer el perro ahora. Final uno. Entonces voy
a Duplicar, vamos D. Dog. Haga doble clic en él. Nombra ese animador de perros. Entra aquí. Queremos
crear un ¿Qué es? Tengo que anotar abajo. Controlador de anulación de animador llamado perro. Nuevamente, vamos a arrastrar a nuestro mal
llamado jugador Controller adentro, debería ser mouse, supongo. Playdle puede ser
ídolo de perro especialmente, pero tengo que crearlos Playerid. Vamos, D, duplicado. Nombre Dog Idle. En este
nombre duplicado para pasear al perro. Y entonces podemos arrastrar estos
a la correcta en Perro. Y luego solo necesitamos arreglar estas animaciones, doble clic. Creo que no me permitirá
reasignarlos a menos que me
hayan seleccionado al animador
. Vamos a probar eso. Curioso. Sí, tienes razón. Si estás luchando,
esto no está funcionando. Y recuerda, eso tiene que ser seleccionado y luego obviamente
asegurarme de que no he cambiado el controlador, error de
novato Hagámoslo. Perro
entonces ellos van con ver las
animaciones correspondientes, y esto es ocioso, perro uno. Ahí vas. Eso funciona muy bien. Paseo canino. Entonces perro dos para el primero un perro uno para el
Segundo uno. Ahí vas. Creo que eso fue correcto. Solo arrastrémoslo
y veamos. Oh, sí. También queríamos cambiar el sprite
inicial. Así que vamos a cambiar eso. Así que haz a ese perro. Ahí vas. Arrastra eso. Ahí vas. Ahí
tenemos un perro. Comprobemos que funciona. Guarde eso, ven a
nuestro controlador de juego. Tipo en perro. Ahí vas. Tenemos un perro deambulando por ahí.
25. Cera Comunica: Bien. Así que tenemos la capacidad de
intercambiar entre un gato, perro y un ratón como
nuestro personaje jugador. Pero, ¿cómo nos comunicamos
desde la primera escena, que es la
escena de cera con la que puedes elegir con qué NFT estás
tocando para escuchar Bueno, creo que la forma más fácil es simplemente hacer una estática pública, Y solo voy a llamar a esto bien, va
a ser una cadena, y yo sólo voy a llamar a esta obra llamar a este
jugador personaje. Y solo voy a usar eso para elegir cuál
juega un pre fab usar. Necesito poner esto en la escena anterior antes de que
esta escena se cargue. Hagámoslo ahora. En primer lugar, vayamos a
nuestra configuración de construcción y
asegurémonos de que nuestra escena de cera aquí. Vamos a abrirlo. Vamos a construir configuraciones y vamos a arrastrar
y soltar eso ahí. Queremos que sea
la primera escena. Vamos a arrastrar esa hacia abajo. Vamos a nuestro controlador de cera. Bien. Mostramos estos botones, y en realidad está aquí
cuando hacemos clic en un botón, estamos depurando el nombre Pero lo que realmente queremos
hacer es que queremos hacer juego controlador jugador
personaje es igual a nombre. Entonces nos estamos comunicando a través escenas como esa usando una estática, lo cual es bastante útil. Y luego solo tenemos que
hacer escena de carga de punto manager. Y solo podemos especificar
que puedes hacer el índice, pero en realidad
solo puedes usar un nombre. Entonces escena principal. Así. Bien. Bien. Entonces
probemos esto. Entonces voy a golpear play. Va a hacer clic en
ancla. Para escanear señal. ¿Puedo usar mi huella del pulgar? Cierra esa espera. Pacientemente. Ahí vas. Ahora bien, qué quiero jugar como voy a
jugar como el gato. Entrando como el gato. Vamos a hacer clic en Reiniciar. Mi conjetura es que probablemente
no va a funcionar. ¿Queremos volver a aquí cuando hagamos clic en
start? Supongo que podemos. Depende de ti, de verdad. Vamos a entrar como un
personaje diferente esta vez. Sólo para verificar dos veces.
Así que entremos como el ratón. Ahí vas. Y
eso está funcionando. Sí. Bien. O sea, puede ser pero t, sí, tengo que hacer esto cada
vez que quieras reiniciar. Podría ser bueno simplemente reiniciar la escena principal en lugar de
volver a la escena de cera. De hecho, hagamos eso ahora. Entonces Mincene esa es la UI. Bolígrafo. Sí, porque esto está
cargando el índice de escena cero, que ahora es la escena de cera. Seamos explícitos al
respecto porque tener números de
índice arbitrarios en no
es muy usar ni amigable para otros programadores
que vienen tras nosotros. Entonces si especificamos recargar
la escena llamada escena principal. Eso es un poco más obvio
lo que estamos tratando de hacer. Vamos a comprobarlo. Entonces quiero entrar en el juego de depilación con
cera. Signo de escaneo de anclaje con estampado de pulgar. Vamos a elegir esta vez. Ahora bien, lo único que
diría es que ir directo y luego comenzar es un
poco injusto, creo. Entonces creo que tenemos
una pantalla que dice, presiona cualquier tecla para comenzar. O podríamos simplemente
tener un botón de inicio. Supongo que hagamos la pulsación cualquier cosa de tecla porque creo que solo me
divierte mostrar cómo hacer eso. Entonces hagámoslo a continuación. Entonces vamos a abrir
la escena principal de la escena de mayo. Debería llamarlo
escena de mayo, pero de todos modos. Y no queremos
comenzar de inmediato. Bien. Y de hecho, esto está
roto ahora porque, por
supuesto, estaría en blanco para comenzar
sin objeto de referencia. Sí, eso tiene sentido que Esto no
va a ser nada hasta que lo
pongamos con la escena de cera. Pero hagamos un default solo para que digamos que
aunque no tengas un NFT,
tal vez para fines de depuración, tal vez para fines de depuración, es útil tener este
conjunto como ahora spawn en un mouse Pero creo que va a ser útil no Entonces el controlador del juego es el lugar perfecto para
configurar esto porque en realidad no está
haciendo mucho en este momento. Entonces lo que podemos hacer es chico. La forma más fácil de hacer
una pausa inmediata es
establecer una escala de tiempo igual a cero. Veamos cómo se ve eso. Como pueden ver, nada se
mueve, y de hecho, si tratamos de movernos, ni siquiera
podemos movernos porque
la escala de tiempo es cero. Así que tipo de todo está algo en
modo pausa, lo cual es ideal. Verás esto usado en los juegos cuando
aparezcas como una
pantalla de configuración o algo así, muchas veces, pausará el
juego de esta manera. Entonces, la escala de tiempo es una manera fácil y agradable de
simplemente hacer una pausa en el juego Y queremos pausar la entrada cualquier tecla Así es cualquier tecla o botón del mouse
actualmente pulsado, entonces podemos establecer una escala de tiempo igual a uno. Así. Ahora bien, esto se ejecutará todo el tiempo siempre que
estemos presionando cosas, lo cual realmente no
importa porque escala de
tiempo se establece
en uno está bien. Entonces, si simplemente sigue haciendo
eso, entonces está bien. Pero si quieres evitar eso, entonces podemos hacer algo como bola
privada cualquier tecla presionada A igual a falsa, solo para ser específicos. Y luego si tecla de entrada
y no ninguna tecla presionada, entonces establecemos eso y luego
simplemente podremos establecer cualquier tecla
pulsada igual a true. Y eso solo
sucederá una vez, y tal vez sea un
poco más seguro. Clave, Así que ahí tienes. Y yo incluso al reiniciar, está
haciendo una pausa hasta que
presionas una tecla Lo cual puede o
no querer que suceda. Pero, bien. Ahora bien, probablemente podríamos
poner en esta pantalla aquí, presionar cualquier tecla para comenzar, pero tal vez no sea realmente necesario porque vas a presionar una tecla para ponerte en marcha de
todos modos para intentar moverte. Eso lo dejaremos, pero
definitivamente es algo
agradable para agregar. Pero creo que eso está
funcionando un poco y en realidad incluso presionando un botón
del mouse lo iniciará, lo cual creo que está bien.
26. Cera Crea una NFT: Bien, vamos a crear
nosotros mismos una colección NFT. Pero primero, antes de hacer eso, vamos
a necesitar crear una billetera. Vamos a hacer clic en crear Wallet. Estamos aquí en wax
dot atomic hub O. Vamos a dar click en crear Monedero. Y la que vamos a usar es esta cartera ancla en el extremo derecho de
la pantalla aquí. Vamos a hacer clic en Seleccionar cartera
Anchor. Voy a marcar aquí. Voy a dar clic en Siguiente. Voy a decir que no
soy un robot. Voy a hacer clic en Completar. Termina tu cuenta
en Anchor Wallet. Creación completa de billetera,
debes proceder al ancla en si aún no has descargado el cliente
ancla a continuación. Entonces voy a hacer clic en
Crear cuenta en el móvil. Y esto nos dará un código QR. Y así quieres
conseguir tu móvil, ya sea Android o IOS y descargar el
monedero ancla en ese móvil. Y ya lo hice,
así que voy a venir aquí, abrir mi app de monedero ancla. Voy a escanear código
QR y
voy a escanear eso y luego me
va a pedir que elija un nombre de cuenta. Entonces voy a elegir
un nombre de cuenta. A ver. ¿Qué debo usar? Entonces voy a
usar cera Unity GM. Y voy a dar clic en Continuar. Y haz clic en Crear cuenta. Y todo esto está
pasando en mi móvil, así que no puedes ver que esto suceda. Sólo te estoy hablando a través de ello. Deberías estar en tu
móvil haciendo esto. Y dice, creando
tu cuenta, espera. Comprobación de clave, huella digital de nuevo. Y dice cuenta creada. Ahora bien, en este punto,
te recomiendo hacer una copia de tu cuenta. Solo para ser rápido,
voy a decir más tarde, pero definitivamente haz una parte de atrás de tu cuenta porque la
perderás de otra manera. Y volvamos aquí. Ahora podemos
volver a wax atomic O y podemos iniciar sesión porque
podemos elegir ancla ahora, y puedo escanear eso y
ahora puedo iniciar sesión con mi cuenta de
cera Unity gM. Ahí vas. Voy a querer que me
deslice para confirmar. Así que voy a deslizarme
para confirmar aquí. Y eso también me ha
verificado. Bien, así que vayamos al creador de
NFT y vamos a
crear una nueva colección Y voy a
llamar a esta colección, digamos, llamarla unidad de cera. Pero tiene que ser de 12
personajes, uno a cinco. Entonces, ¿cera es? Y Unidad. A la cera larga y la unidad uno. Creo que esa cera
Unity. Ahí vas. Entonces voy a hacer la dosis me
quedaré con esto de todos modos. Describe la
colección de la colección y luego queremos
subir algunas imágenes. Entonces quieres echar un
vistazo a esto y ver qué tamaño
necesitas para el Bien. Imagen de fondo
y la imagen del logotipo. Las imágenes del logotipo son bastante
estándar cinco 12 por cinco 12. Y esto es 1920 por 500. Déjame ver si voy a
encontrar algunas imágenes para esto. Así que encontré algunas imágenes
descaradas para estos documentos, MyFREC Eso es 1920 500. Entonces tengo que desplazarme
un poco hacia abajo para ver el guardado. Y entonces sí tengo ahí un logo bastante
cursi. Oh, caray Dejar. Y luego veamos
qué más necesito llenar aquí. Creo que eso es, en realidad. Vamos a hacer clic en guardar ahora. Eso es pedirme que
firme esto en mi billetera. Entonces abramos mi billetera ancla, y sin embargo eso es algo
que ha salido de y wallet. Tengo que deslizarme para confirmar, tengo que desplazarme un poco hacia abajo, y luego deslizarme para confirmar. Y eso es hacer una transacción. Entonces probablemente obtendrás esto, que esencialmente significa
que necesitamos poner un poco de dinero
en nuestra billetera de cera. Debido a que el uso de la transacción es 25703 es mayor que 4906 Entonces lo que
vamos a tener que hacer es neto hagámoslo. Bien. Simplemente podemos hacer clic en
Agregar fondos aquí. Y voy a tener que irme y tú algo así como
bancos para simplemente poner un poco de dinero
en mi cartera de cera. Entonces te encontraré aquí atrás. Bien, entonces ahora tengo
20 cera en mi billetera. Entonces eso no es mucho dinero, pero debería ser suficiente para
cubrir esta pequeña transacción. Es como $1.37. Entonces ahí voy a
aceptar la cuota. Va a querer que firme en mi móvil, lo cual estoy haciendo. Y si consigues esto, entonces vamos
a necesitar comprar algunos RM. Entonces necesita 360. Entonces echemos un vistazo. Estás comprando 300. Dos fue calzada comprar suficiente
R. Así que hagámoslo. Me gustaría confirmar. Bien, ahora tengo algo de RM. Debería poder
crear esta colección ahora. Vamos a intentarlo de nuevo. Yo no pasé. Entonces no me voy a molestar en
poner una descripción. Guardar. Bien. Esto lo estoy confirmando en mi móvil. Y parece que
pasó por ese tiempo. Fresco. Bien. Llegamos
ahí eventualmente. Voy a subir
ese mismo logo nuevamente así que tengo un logo para
esta colección en particular, guardar Y luego si nos desplazamos hasta el fondo, ahora
podemos crear RNFT Vamos a hacer clic en Crear Nuevo NFT. Seleccione la categoría. Voy a crear
una nueva categoría porque aún no tengo ninguna. Y sólo voy a
llamar a esta categoría juego. Haga clic. Estoy contento con estos
atributos. Eso está bien. No necesito agregar más. Entonces, hagamos clic en Crear. Confirmar la transacción. Y el éxito en eso. Fresco. Entonces debería poder seleccionar categoría en su lugar ahora y genial. Tengo una categoría de juego aquí, voy
a hacer click en eso. Y ahora voy a
seleccionar una plantilla. Ahora, como dice aquí,
el propósito principal de una plantilla es ahorrar costos de RM almacenando datos duplicados. Entonces, si lo
piensas, ya sabes, teníamos los ejemplos de ratón, gato y perro. Y en realidad, cada uno
de esos era una plantilla, lo que significa que puedo
irme y crear más de ellos. No hay problema. No va
a costar tanto más. Entonces es una buena idea
crear una plantilla. Bien. Entonces aquí subiríamos
una imagen del ratón. Entonces déjame hacer eso. Max suministro infinito, bueno. Queremos usar esta plantilla
tantas veces como queramos. Bueno establecer para
tener un campo de nombre, que vamos a llamar mouse. Ya
subimos la imagen, así que esto es bueno. Y ahora estamos bien para
crear nuestra plantilla. Entonces voy a hacer eso. Acordar términos y
servicio, crear plantilla. Bien. Firme la transacción en el teléfono
móvil como de costumbre. Y he creado una plantilla. Entonces ahora puedo usar esa
plantilla para crear NFT. ¿Cuántas copias
del ratón quiero? Bueno, por el momento,
vamos a crear el uno, y vamos a ver si podemos
usar eso en nuestro proyecto. Entonces bien. Vamos a refrescarnos. Hemos creado una categoría. Una categoría define los
atributos de NFT y plantilla. Pueden ser formas de categorizar tus NFT como
por tipo o versión Después creamos una plantilla. Tenemos una plantilla
para el mouse, así podemos crear tantos NFT
como quieras a partir de
esa plantilla de mouse Voy a crear el único NFT, y voy a hacer clic en Crear Firma de la transacción. Y genial, hemos creado nuestro primer NFT, ¿
bastante impresionante? Ahora, veamos si podemos ver este NFT cuando iniciemos sesión
en nuestro proyecto Bien.