Anuncio

Una característica sorprendente de la economía de Internet es el auge de los videojuegos independientes. Una vez que el dominio exclusivo de los estudios triple-A multimillonarios de miles de hombres, se han desarrollado una serie de herramientas que llevar los recursos modernos de desarrollo de juegos a las manos de individuos o pequeñas colecciones ad-hoc de programadores y diseñadores. Hemos discutido previamente el mejores juegos indie 10 juegos independientes tan buenos que olvidarás que son independientesSin embargo, puede haber ocasiones en las que desee algo diferente de la norma independiente. Un juego que sigue los valores independientes, pero está hecho con la calidad por la que los juegos AAA de primer nivel son conocidos. Títulos como ... Lee mas , así que asegúrate de revisarlos en busca de inspiración sobre lo que se puede lograr con herramientas como Unity.

Esta guía está disponible para descargar como PDF gratuito. Descargue Programming A Game With Unity: A Beginner’s Guide now. Siéntase libre de copiar y compartir esto con sus amigos y familiares.
instagram viewer

Estos equipos de desarrollo de juegos independientes han demostrado una agilidad y tolerancia al riesgo que, en muchos casos, les permite impulsar la innovación en el juego más rápido que sus contrapartes de gran presupuesto. Una serie de títulos indie sorprendentemente exitosos se han estrenado en los últimos años, incluidos Minecraft, Limboy chico súper carne, e incluso si no tienes las habilidades para hacer juegos como este, puedes hacer un juego usando Buildbox Cómo hacer un videojuego en una semana usando BuildboxHay un programa que hace que el desarrollo de juegos sea increíblemente fácil incluso para aquellos que no tienen absolutamente ninguna experiencia en el diseño de videojuegos. Se llama Buildbox. He aquí por qué deberías probarlo. Lee mas .

En el panorama de rápido desarrollo del desarrollo de juegos independientes, Unidad se ha convertido en una especie de estándar de facto: su bajo costo, facilidad de uso y amplio conjunto de características lo hacen ideal para el desarrollo rápido de juegos. La unidad es tan flexible que incluso puedes crea tus propios controles de juego personalizados Cómo hacer un controlador de juego personalizado con Arduino y Unity¿Alguna vez has querido diseñar tu propio controlador de juego? ¡Es más fácil de lo que piensas! Lee mas con un poco de bricolaje saber cómo!

Incluso grandes estudios como CCP (desarrolladores de Eva en línea) utilícelo para crear prototipos de conceptos de juegos rápidamente. Unity ofrece un "motor de juego en una caja": un motor de física y renderizado con ganchos para varios lenguajes de script, adaptable a prácticamente cualquier género de videojuego.

Si bien Unity proporciona un editor visual para manipular el entorno del juego, Unity no es una herramienta creadora de juegos de "programación cero". Requiere que programes para producir resultados, pero también te brinda una herramienta mucho más flexible y poderosa que cualquier programa de "creador de juegos".

Unity no hará el trabajo por usted, pero sí reducirá considerablemente la barrera de entrada. Comenzando completamente desde cero con C ++ y OpenGL, puede llevar días llegar al punto en el que realmente se muestra algo en la pantalla. Usando Unity, lleva unos diez segundos. Unity pone los elementos básicos de la creación de juegos en manos de programadores novatos de una manera rápida e intuitiva.

Hoy te guiaré por todo lo que necesitas saber para crear un juego en Unity, que se divide en diez capítulos principales:

§1 – Versiones de la unidad

§2 – Instalación de Unity

§3 – Una breve introducción al paradigma orientado a objetos

§4 – Conceptos básicos de la unidad

§5 – Ejemplo: elementos básicos de un juego

§6 – Scripting en Unity

§7 – Ejemplo: Scripting Pong

§8 – Explorando la documentación / Aprendiendo más

§9 – Construyendo su juego / Compilando una aplicación independiente

§10-Notas de cierre

1. Versiones de la unidad

La unidad viene en dos sabores básicos: la versión pro y la versión gratuita. Hay un cantidad de diferencias, pero, en términos generales, la versión pro admite una serie de mejoras visuales (como sombras suaves en tiempo real y postprocesamiento), y una gran cantidad de características relativamente menores que son extremadamente útiles para complejos juegos.

Dicho esto, para la mayoría de los juegos relativamente simples que quieras construir, la versión gratuita de Unity es perfectamente adecuada. Desglosaremos las diferencias clave a continuación con más detalle para los interesados.

1.1 Precios

La versión gratuita de Unity es, por supuesto, gratuita. Sin embargo, existen algunas limitaciones: la versión gratuita de Unity no se puede licenciar a ninguna empresa con un ingreso anual de más de $100,000. Si bien estas organizaciones están más allá del alcance de esta guía, si sospecha que podría convertirse en una organización de este tipo, probablemente sea aconsejable elegir la versión Pro.

La versión Pro de Unity es $75 un mes o $1500 para una licencia permanente, y no tiene límites sobre lo que puede hacer con los juegos creados con él. También hay disponible una versión de prueba gratuita de 30 días, que utilizaremos para esta guía, con el fin de ofrecerle una descripción general de las funciones disponibles lo más completa posible. Una licencia de estudiante de un año también está disponible a través de Studica para $129.

1.2 Características

Hay muchas características ausentes en la versión gratuita de Unity. Sin embargo, las diferencias más importantes son las siguientes: la versión gratuita de Unity carece de varias opciones de representación que permiten juegos de mejor aspecto y más rápidos (compatibilidad con LOD, posprocesamiento del espacio de pantalla, sombreadores avanzados, sombras suaves en tiempo real y diferido representación). También le falta la totalidad sistema de animación Mechanim, y algunas herramientas de IA.

En general, para proyectos complejos a gran escala, o proyectos donde el rendimiento gráfico es importante, la versión pro vale la pena. Uso la versión pro, porque desarrollo juegos de realidad virtual para Grieta de Oculus Revisión de Oculus RiftLa realidad virtual no es nueva, pero finalmente es asequible y está a nuestro alcance. Después de cuatro años y dos prototipos de desarrollo, ha llegado la edición final para el consumidor del Oculus Rift. Lee mas , y el soporte de posprocesamiento del espacio de pantalla es necesario para interactuar correctamente con los auriculares.

2. Instalando Unity

La unidad es fácil de instalar. Puede descargar el ejecutable desde unity3d.com/get-unity/download.

Una vez descargado, ejecútelo y luego siga las instrucciones del instalador. Cuando finalice la instalación, aparecerá una ventana titulada "active su licencia de Unity". Marque la casilla marcada "activar una prueba gratuita de 30 días de Unity Pro" y luego "Aceptar".

¡Felicidades! Ahora tiene una prueba de 30 días de Unity Pro. Cuando caduque la versión de prueba, si no desea comprar la versión pro, puede cambiar a la versión gratuita y conservar su contenido existente.

3. Una breve introducción al paradigma orientado a objetos

Antes de comenzar a trabajar con Unity, es importante que repasemos un poco lo básico. La unidad apoya a ambos C# y JavaScript para programación de juegos 7 Unity Game Development Idiomas para aprender: ¿cuál es el mejor?¿Quieres comenzar el desarrollo del juego en Unity? Necesitará familiarizarse con uno de estos idiomas compatibles con Unity. Lee mas ; estaremos trabajando con C # para este tutorial.

En primer lugar, si nunca ha programado antes, deje a un lado este tutorial y pase unos días trabajando a través de Microsoft C # Language Primer hasta que te sientas cómodo usando el lenguaje para tareas simples.

Si desea algo un poco diferente a C # (pero no necesariamente un lenguaje que puede usar en Unity), eche un vistazo a nuestra guía de seis lenguajes de programación más fáciles para principiantes 6 lenguajes de programación más fáciles de aprender para principiantesAprender a programar se trata de encontrar el idioma correcto tanto como del proceso de edificación. Aquí están los seis lenguajes de programación más fáciles para principiantes. Lee mas .

Si ha programado anteriormente en un lenguaje imperativo u orientado a objetos como C o Java, lea el manual y familiarícese con la forma en que C # difiere de otros lenguajes que ha utilizado en el pasado. De cualquier manera, no continúe con el tutorial hasta que se sienta cómodo resolviendo problemas simples con C # (por ejemplo, si tuviera que preguntar si escribe un programa que imprime los primeros cien números primos, debería poder escribir ese programa sin consultar Google)

El concepto más importante para entender aquí es el paradigma orientado a objetos ¿De dónde obtuvo su nombre la programación "orientada a objetos"?Orientado a objetos no es solo una palabra de moda al azar que escuchas en los círculos de programación. Hay una razón detrás del nombre, pero ¿qué? Únete a mí mientras exploro algunos de los fundamentos de los conceptos de programación y explico ... Lee mas (abreviado como OOP). En lenguajes orientados a objetos, los programas se dividen en unidades funcionales llamadas Objetos. Cada objeto tiene sus propias variables y funciones privadas. Las funciones específicas del objeto se llaman métodos.

La idea aquí es la modularidad: al aislar cada objeto y forzar a otros objetos a interactuar con él. a través de sus métodos, puede reducir la cantidad de posibles interacciones no intencionales y, por extensión, loco. También puede crear objetos que puede reutilizar más tarde sin modificaciones. En Unity, construirá estos objetos y los adjuntará a entidades de juego (cuyo comportamiento gobernarán).

Los objetos son instanciados de clases: una clase es solo un archivo que establece la definición de su objeto. Entonces, si quieres un Mook objeto que maneja IA para un enemigo en tu juego, escribirías una clase "Mook" y luego adjuntarías ese archivo a cada entidad enemiga. Cuando ejecutes tu juego, cada enemigo estará equipado con una copia del objeto "Mook".

Adjuntar un nuevo script a un objeto se ve así:

Programación de un juego con la unidad: una guía para principiantes juego de programa de unidad 1

Primero, selecciona el objeto e ir al Inspector. Clickea en el Agregar componente botón.

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 2

Ir nuevo guión, ingrese el nombre que desea y haga clic en crear y agregar.

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 3

¡Ahora tiene un nuevo script que puede editar haciendo doble clic en él!

Un archivo de clase se parece a esto:

usando UnityEngine; Mook de clase pública: MonoBehaviour {salud flotante privada; Inicio nulo () {salud = 100; } anular Update () {if (salud> 0) {/ * Busca un jugador si te encuentras con el jugador en el camino, mátalo si te disparan, elimina una cantidad aleatoria de salud * /}} }

Analicemos esto:

  • Usando UnityEngine: Esta línea le dice a C # que queremos usar las bibliotecas de Unity, que nos permiten conectarnos al motor de juego de Unity.
  • Clase pública Mook: MonoBehaviour:Esta línea declara la clase y su nombre: Mook.
  • Salud del flotador privado: Esto declara una variable de clase privada (que solo se puede cambiar desde dentro de la clase). La variable recibe un valor en comienzo.
  • Inicio nulo (): Esto declara un método llamado comienzo. El inicio es un método especial que se ejecuta solo una vez, cuando el juego se inicia inicialmente.
  • Actualización nula (): La actualización es otro método especial, que se ejecuta en cada cuadro. La mayor parte de la lógica de tu juego irá aquí.
  • // si te encuentras con el jugador en el camino, mátalo: Esta línea es un comentario (C # ignora cualquier línea que comience con una barra doble). Los comentarios se utilizan para recordar qué hacen los bits de código en particular. En este caso, este comentario se está utilizando para reemplazar un bloque de código más complicado que realmente hace lo que el comentario describe.

Junto con comienzo y Actualizar, puede crear instancias de sus propios métodos con casi cualquier nombre. Sin embargo, los métodos que cree no se ejecutarán a menos que se los llame. Declaremos un método para una clase hipotética llamada addTwoNumbers eso suma dos números juntos:

public float addTwoNumbers (float a, float b) {return a + b; }

Esto declara un método público (accesible para otros objetos) que devuelve un flotante, llamado addTwoNumbers, que toma dos flotantes como entrada (llamada una y si). Luego devuelve la suma de los dos valores como su salida.

Llamar a este método desde dentro de la misma clase (por ejemplo, desde adentro Actualizar) Se ve como esto:

resultado flotante = addTwoNumbers (1, 2);

Llamar al método desde otra clase es similar:

instancia de addTwoNumbers; resultado flotante = instancia.addTwoNumbers (1, 2);

Nuevamente, esto solo crea una instancia de nuestra clase, accede al método apropiado y lo alimenta con los números que queremos agregar, luego almacena el resultado en resultado. Sencillo.

Si su script está adjunto a un objeto que tiene propiedades especiales (como un emisor de partículas) a las que no se puede acceder bajo el conjunto normal de parámetros de GameObject, puedes elegir tratarlo como un tipo diferente de entidad de juego usando la GetComponent método.

La sintaxis para eso se ve así:

GetComponent().Jugar();

Si algo de esto no le resulta familiar, regrese y revise el manual de C #. Le ahorrará mucha frustración a medida que avanzamos.

4. Fundamentos de la unidad

En esta sección, vamos a trabajar a través de la mecánica básica del motor de Unity. El flujo de trabajo en Unity es más o menos así:

  1. Crear una entidad para desempeñar un papel en el juego (en blanco GameObjects puede usarse para tareas lógicas abstractas).
  2. Escriba o encuentre un archivo de clase y agréguelo a la entidad como un script (usando el Agregar componente botón en el inspector ver.
  3. correr > prueba > depurar > repetir hasta que funcione y pasar al siguiente elemento del juego.

Unity viene con una serie de pestañas de vista básicas que pueden presentarse de varias maneras al gusto del usuario. Los cinco grandes son:

  1. Juego: muestra una instancia en ejecución del juego con la que puedes interactuar y probar.
  2. Escena: proporciona una versión estática y editable de mundo de juegos.
  3. Inspector: le permite modificar entidades individuales en el mundo del juego seleccionándolas en el editor lengüeta.
  4. Proyecto: le permite navegar a través de los archivos del proyecto y arrastrar modelos, materiales y otros recursos al editor pestaña para colocarlos en el mundo del juego.
  5. Jerarquía: Esta pestaña muestra todos los objetos del mundo, lo que le permite encontrar objetos distantes en la escena y entidades primarias entre sí haciendo clic y arrastrando.

Vea el diagrama a continuación para conocer las ubicaciones de todas estas cosas:

Programación de un juego con Unity: una guía para principiantes unidad program game game 0

4.1 Entidades de unidad

4.1.1 Mallas

Las mallas son el camino Geometría 3D está representado en la Unidad. Puedes usar el dispositivo incorporado de Unity primitivo objetos (cubos, esferas, cilindros, etc.), o importe sus propios modelos 3D desde un paquete de modelado como Licuadora Comenzando con Blender: 7 tutoriales fantásticos para novatosEl modelado 3D es una excelente manera de ejercitar la creatividad mientras se mantiene en contacto con su lado técnico. Aquí hay algunos tutoriales gratuitos increíbles. Lee mas o maya Learning Maya 2016: dónde comenzarMaya es una herramienta utilizada para la animación en 3D, pero viene con una curva de aprendizaje increíblemente empinada. ¿Qué buen material de enseñanza hay? Lee mas . Unity admite una variedad de formatos 3D, que incluyen .fbxy .3ds.

Las herramientas básicas para manipular mallas son los botones de escala, rotación y traslación en la esquina superior izquierda de la interfaz. Estos botones agregan iconos de control a los modelos en la vista del editor, que luego se pueden utilizar para manipularlos en el espacio. Para alterar la textura o las propiedades físicas de un objeto, selecciónelas y use el inspector vista para analizar el material y cuerpo rígido elementos.

4.1.2 Elementos de la GUI

Los sprites y el texto de la GUI tradicional se pueden mostrar usando el Texto GUI y el Textura GUI GameObjects en el editor. Sin embargo, una forma más robusta y realista de manejar elementos de la interfaz de usuario es usar el Texto en 3D y Patio GameObjects (con texturas transparentes y un sombreador transparente apagado) para colocar elementos de HUD en el mundo del juego como entidades.

En el jerarquía A la vista, estos elementos de juego se pueden arrastrar a la cámara principal para hacerlos niños, asegurando que se muevan y giren con la cámara.

Los elementos de la GUI (texto y texturas) pueden tener su tamaño y escala ajustados usando los campos relevantes en la pestaña del inspector.

4.1.3 Materiales

Los materiales son combinaciones de texturas y sombreadores Cinco términos importantes para juegos de PC explicadosSi juegas en una consola, los detalles técnicos se manejan por ti. Algunos jugadores prefieren esto, pero los jugadores de PC a menudo disfrutan del mayor grado de control que tienen sobre el ojo de un juego ... Lee mas , y se puede arrastrar directamente a los objetos del juego desde la pestaña del proyecto. Unity Pro incluye una gran cantidad de sombreadores, y puedes ajustar la textura unida a ellos usando la pestaña del inspector para un objeto al que se aplican.

Para importar una textura, conviértala en .jpg, .pngo .bmpy arrástrelo al bienes carpeta debajo del directorio del proyecto de Unity (que aparece en Mis documentos por defecto). Después de unos segundos, aparecerá una barra de carga en el editor. Cuando termine, podrá encontrar la imagen como una textura debajo del proyecto lengüeta.

4.1.5 Luces

Las luces son GameObjects que proyectan resplandor en el mundo. Si no hay luces en su escena, todos los polígonos se dibujan con el mismo nivel de brillo, lo que le da al mundo un aspecto plano y deslucido.

Las luces se pueden colocar, girar y tener varias características internas que puede personalizar. los intensidad control deslizante controla el brillo de la luz, y el rango controla qué tan rápido se desvanece.

Las pautas en el vista de escena Le muestra el alcance máximo de la iluminación. Juega con ambas configuraciones para lograr el efecto deseado. También puede ajustar el color de la luz, el patrón (Galleta se muestra en la superficie a la que apunta la luz y qué tipo de destello aparece en la pantalla cuando se mira directamente a la luz. La cookie se puede utilizar para falsificar patrones de luz más realistas, crear sombras falsas dramáticas y simular proyectores.

Los tres tipos principales de luz son Mancha, puntoy direccional.

Focos tener una ubicación en el espacio 3D y proyectar luz solo en una dirección en un cono de ángulo variable. Son buenos para linternas, reflectores y, en general, le brindan un control más preciso de la iluminación. Las luces puntuales pueden proyectar sombras.

Luces puntuales tener una ubicación en el espacio 3D y proyectar luz de manera uniforme en todas las direcciones. Las luces puntuales no proyectan sombras.

Luces direccionales, finalmente, se utilizan para simular la luz solar: proyectan la luz en una dirección como desde infinitamente lejos. Las luces direccionales afectan a todos los objetos de la escena y pueden producir sombras.

4.1.6 Sistemas de partículas

UNA Sístema de partículas es un GameObject que genera y controla cientos o miles de partículas simultáneamente. Las partículas son pequeños objetos 2D optimizados que se muestran en el espacio 3D. Los sistemas de partículas utilizan renderizado y física simplificados, pero pueden mostrar miles de entidades en tiempo real sin tartamudear, lo que los hace ideales para humo, fuego, lluvia, chispas, efectos mágicos y más.

Hay muchos parámetros que puede ajustar para lograr estos efectos, y puede acceder a ellos al generar un sistema de partículas debajo del editor de componentes > seleccionando el sistema de partículas > abriendo la pestaña del inspector. Puede cambiar el tamaño, la velocidad, la dirección, la rotación, el color y la textura de cada partícula, y configurar la mayoría de esos parámetros para que también cambien con el tiempo.

Bajo la colisión atributo, si lo habilita y establece el espacio de simulación en mundo obtendrá partículas que colisionarán con objetos en el mundo, que se pueden usar para una serie de efectos de partículas realistas, como lluvia, agua en movimiento y chispas.

5. Ejemplo: elementos básicos de un juego

Para este tutorial, vamos a hacer un juego simple de Apestar - algo que hemos cubierto varias veces en bricolaje antes:

  • Arduino Classic Pong Cómo recrear el clásico juego de Pong con ArduinoPong fue el primer videojuego que llegó al mercado masivo. Por primera vez en la historia, el concepto de "videojuego" se introdujo en la casa de la familia, gracias al Atari 2600 -... Lee mas
  • Arduino OLED Pong Arduino Retro Gaming con una pantalla OLED¿Alguna vez se preguntó cuánto trabajo se necesita para escribir sus propios juegos retro? ¿Qué tan fácil es codificar Pong para el Arduino? Lee mas

En esta sección, repasaremos la organización de los elementos principales: el tutorial de secuencias de comandos se incluirá más adelante.

Primero, analicemos el juego de Pong en sus componentes básicos. Primero, necesitamos dos paletas y una pelota. La pelota vuela fuera de la pantalla, por lo que queremos un mecanismo para restablecerla. También queremos que el texto muestre la puntuación actual y, en aras de mostrarle todos los elementos centrales de Unity, queremos un efecto de partículas elegante cuando golpee la pelota. Todo el juego tendrá que estar dramáticamente iluminado.

Eso se descompone en un objeto de pelota (una esfera), un engendrador, dos accesorios de paleta con emisores de partículas adjunto, un Entidad de texto 3Dy un destacar. Para este tutorial, utilizaremos el material físico predeterminado rebotar, con combinar rebote ajustado a multiplicar. Así es como se ve la configuración, en diez capturas de pantalla:

Programación de un juego con la unidad: Guía para principiantes unidad programa juego 4
Programación de un juego con la unidad: Guía para principiantes unidad programa juego 5

Primero, crea un apoyo del cubo para la paleta

Programación de un juego con Unity: una guía para principiantes unidad programme game 6

Escala apropiadamente duplicarloy poner un esfera entre las palas para la pelota.

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 7

Luego, crea un Objeto 3DText y escala y posición correctamente, cambiando el tamaño de fuente atributo para obtener una imagen menos pixelada.

Programación de un juego con Unity: A Beginner's Guide unity program game 8

Luego, crea dos sistemas de partículas, elija las características que desee y adjúntelas a las paletas.

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 9
Programación de un juego con la unidad: Guía para principiantes unidad programa juego 10

A continuación, querrás posicionar y girar la cámara para que encuadre la escena correctamente. Mientras la cámara está seleccionada, puede ver una pequeña vista previa de la vista de la cámara en la esquina inferior derecha.

Programación de un juego con la unidad: Guía para principiantes unidad programa juego 11

Antes de terminar, necesitamos crear dos cubos adicionales para ser parachoques, para evitar que la pelota rebote fuera del área de juego. Podemos hacerlos invisibles desmarcando renderizador de malla en el pestaña inspector.

Programación de un juego con Unity: una guía para principiantes unidad program game 13
Programación de un juego con la unidad: una guía para principiantes unidad programa juego 14

Si tocas jugar, ahora puedes ver los elementos básicos de nuestro juego. Todavía no harán nada, ¡pero llegaremos a eso!

Programación de un juego con la unidad: una guía para principiantes juego de programa de unidad 12

Ahora que tenemos esa configuración, vamos a hablar sobre lo que implica la creación de secuencias de comandos para crear un juego.

6. Scripting en Unity

Una vez que tenga un script adjunto a un objeto, puede revisarlo haciendo doble clic en el inspector. Esto abre MonoDevelop, el entorno de desarrollo predeterminado para Unity. En esencia, Monodevelop es un editor de texto con características específicamente optimizadas para la programación.

Las palabras clave y los comentarios se destacan en azul y verde, y los valores numéricos y las cadenas aparecen en rojo. Si has usado Eclipse u otro IDE, MonoDevelop es muy similar. Usted puede construir sus scripts desde el interior del editor, para verificar si hay errores de sintaxis, de esta manera:

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 15

En general, para que su script interactúe con Unity, deberá hacer referencia a los elementos que posee el objeto que contiene el script (puede ver una lista de estos elementos debajo de inspector pestaña cuando se selecciona el objeto relevante). Luego puede llamar a métodos o establecer variables para cada uno de estos elementos para promulgar los cambios que desee.

Si desea que una secuencia de comandos en un objeto afecte las propiedades de un objeto diferente, puede crear un vacío GameObject variable en su script, y use el inspector para asignarlo a otro objeto en la escena.

Una lista de los elementos que puede tener un objeto es la siguiente (tomada de la vista del inspector de una de nuestras paletas en el ejemplo anterior):

  1. Transformar
  2. Cubo (filtro de malla)
  3. Box Collider
  4. Renderizador de malla

Cada uno de estos aspectos del objeto puede ser influenciado desde un script. A continuación, veremos exactamente cómo.

6.1 Transformar

Las funciones de transformación para un GameObject en Unity controlan los parámetros físicos de ese objeto: su escala, es posición, y es orientación. Puede acceder a ellos desde un script como este:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

En los ejemplos anteriores, las variables nombradas son de los tipos especificados en los nombres. Aquí hay algunos detalles clave: la posición y la escala, como es de esperar, se almacenan como Vector3s. Puedes acceder al X, Yy Z componentes de cada uno (por ejemplo, transform.position.y te da la distancia de un objeto por encima del plano cero).

Sin embargo, para evitar bloqueo de cardán, las rotaciones se manejan como Cuaterniones (vectores de cuatro componentes). Debido a que la manipulación manual de los cuaterniones no es intuitiva, puede manipular las rotaciones utilizando ángulos eulerianos utilizando Cuaternio. Euler método así:

transform.rotation = Quaternion. Euler (cabeceo, guiñada, balanceo);

Si desea mover objetos sin problemas de un lugar a otro, encontrará el Slerp método para cuaterniones y vectores3s útiles. Slerp toma tres argumentos: el estado actual, el estado final y la velocidad de cambio, y los interpola suavemente entre ellos a la velocidad dada. La sintaxis se ve así:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Renderizador

Las funciones de renderizador en Unity le permiten controlar la forma en que las superficies de los accesorios se representan en la pantalla. Puede reasignar la textura, cambiar el color y cambiar el sombreador y la visibilidad del objeto. La sintaxis se ve así:

renderer.enabled = falso; renderer.material.color = nuevo color (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

La mayoría de estos tienen funciones bastante claras. El primer ejemplo hace que el objeto en cuestión sea invisible: un truco útil en varias situaciones. El segundo ejemplo asigna un nuevo Color RGB (es decir, verde) al objeto en cuestión. El tercero asigna la textura difusa principal a una nueva variable de textura. El último ejemplo cambia el sombreador del material del objeto a una variable de sombreador recién definida.

6.3 Física

Unity viene con un motor de física integrado, algo que juegos de sandbox de física Smash, Drive & Build: 3 simuladores de sandboxes de física impresionante Lee mas todo uso. Esto le permite asignar las propiedades físicas de los objetos y dejar que los detalles de su simulación se manejen por usted. En general, en lugar de tratar de implementar su propia física usando un libro de texto y el sistema de transformación, es más simple y robusto usar el motor de física de Unity en la mayor medida posible.

Todos los accesorios de física requieren colisionadores. Sin embargo, la simulación real en sí es manejada por un cuerpo rígido, que se puede agregar en el inspector ver. Los cuerpos rígidos pueden ser cinemático o no cinemático.

Los accesorios de física cinemática chocan con (y afectan) los accesorios de física no cinemática que los rodean, pero no se ven afectados por la colisión. Los accesorios cinemáticos estáticos son los objetos inamovibles proverbiales, y los objetos cinemáticos en movimiento son los fuerza imparable proverbial (para el registro, cuando chocan, simplemente pasan a través de cada otro).

Más allá de eso, puede ajustar el arrastre angular del objeto (cuánta energía se necesita para girarlo), cambiar su masa, dictar si está afectado o no por la gravedad y aplicarle fuerzas.

Ejemplos:

rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; cuerpo rígido. AddForce (transform.forward * 100);

Todos estos son bastante explicativos. Lo único a tener en cuenta aquí es el uso de transform.forward. Todos los de Vector3 tienen tres componentes (.adelante, .arribay .derecho) asociado con ellos, al que se puede acceder y gira con ellos (adelante es la dirección de la flecha azul en el editor). los transform.forward La palabra clave es simplemente el vector directo para el objeto actual con magnitud 1. Se puede multiplicar por un flotador para crear más fuerza sobre el objeto. También puedes hacer referencia transform.up y transform.right, y negarlos para obtener sus reveses.

6.4 Colisión

A menudo, cuando construyes un juego, te gustaría que una colisión produzca algún cambio de estado en tu código, más allá de la simulación física. Para esto, necesitarás un método de detección de colisión.

Se necesita una cierta cantidad de trabajo de preparación para detectar colisiones en Unity. Primero, al menos uno de los objetos en la colisión necesita un cuerpo rígido no cinemático adjunto a. Ambos objetos deben tener colisionadores correctos, configurados para que no sean disparadores. La velocidad total de ambos objetos debe ser lo suficientemente baja como para que realmente choquen, en lugar de simplemente saltarse entre sí.

Si se ha ocupado de todo eso, puede verificar la colisión colocando un método especial de detección de colisión en un script adjunto al objeto con el que desea verificar la colisión. El método se verá así:

void OnCollisionEnter (Collision other) {// haz las cosas aquí. }

Este método se ejecutará automáticamente durante el primer fotograma que otro objeto toque su objeto. La entidad de colisión otro es una referencia al objeto que golpeó. Puede, por ejemplo, hacer referencia a su gameobject, cuerpo rígidoy transformar características para manipularlo de varias maneras. Mientras OnCollisionEnter es probablemente la función más común que usará, también puede usar OnCollisionExit y OnCollisionStay (con una sintaxis y un uso idénticos), que se activan durante el primer fotograma en el que deja de colisionar con un objeto y durante cada fotograma en el que colisiona con un objeto, respectivamente.

A veces, también puede ser útil hacer lo que se llama Raycasting. En la emisión de rayos, una línea infinitamente delgada (un rayo) se emite a través del mundo desde algún origen, a lo largo de algún vector y, cuando golpea algo, se devuelve la posición y otros detalles de la primera colisión. El código para una emisión de rayos se ve así:

RaycastHit hit; si (Física. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

Esto arroja un rayo desde la posición del objeto actual a lo largo de -Vector3.up (hacia abajo), y vincula la variable golpear al primer objeto con el que colisiona. Una vez que su rayo ha golpeado algo, puede acceder hit.distance para determinar qué tan lejos está, o golpear. GameObject para manipular el objeto que golpeaste.

Raycasts como este se pueden usar para que los tiradores determinen a qué apunta el arma, o para seleccionar objetos cuando la cámara los mira, o para ciertos estilos de mecánica de movimiento.

6.5 Corrección de tiempo

Un factor importante a tener en cuenta cuando manipulas objetos de esta manera tiene que ver con cuadros por segundo. No importa cuán cuidadosamente optimices, la velocidad de fotogramas siempre variará y no querrás que la velocidad de tu juego varíe en consecuencia. Si alguien más ejecuta tu juego en una computadora más rápida de lo que lo desarrollaste, no querrás que el juego se ejecute a doble velocidad.

La forma en que corrige esto es multiplicando los valores que está utilizando por el tiempo que le tomó renderizar el último fotograma. Esto se hace usando Time.deltaTime. Esto cambia efectivamente la velocidad de cualquier variable desde la que incremente cada fotograma cambio por cuadro a cambio por segundo, y probablemente debería hacer este cambio a cualquier valor que esté incrementando o decrementando cada cuadro.

6.6 Fuentes de audio y oyentes

Ahora que hemos cubierto cómo crear, renderizar y controlar objetos, hablemos sobre el otro sentido que los juegos de computadora pueden servir: a saber, sonido. Unity admite dos tipos de sonidos: 2D y 3D sonidos Los sonidos 3D varían su volumen según la distancia y se distorsionan a medida que se mueven en relación con la cámara; Los sonidos 2D no.

Los sonidos 2D son apropiados para voces en off y música de fondo, y los sonidos 3D se aplican a los sonidos generados por eventos en el mundo. Para cambiar si un sonido es 3D o no, selecciónelo en proyecto ver, cambiar a la inspector ver y seleccionar la opción adecuada en el menú desplegable, luego presione el reimportar botón.

Para reproducir realmente el sonido, deberá adjuntar un fuente de audio a un accesorio (el accesorio desde el que desea que se origine el sonido, en el caso de un sonido 3D). Entonces deberás abrir el segmento de audio campo y seleccione su archivo de sonido.

Puedes usar myAudioSource. Pausa() y myAudioSource. Jugar() para controlar esos archivos de sonido. Puede ajustar los comportamientos de caída, el volumen y el desplazamiento Doppler de los sonidos debajo de inspector pestaña para la fuente de audio.

6.7 Entrada

Un juego que no recibe ninguna entrada del usuario no es un gran juego. Hay muchos tipos diferentes de entrada en los que puede leer, y se puede acceder a casi todos a través de Entrada y Clave objetos. Algunas declaraciones de entrada de muestra (que tienen valores evaluados en cada cuadro) están a continuación.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Entrada. GetMouseButton (0); bool isPressingSpace = Entrada. GetKey (KeyCode. Espacio);

Las funciones de estas líneas se explican principalmente por sí mismas. Con estos tres tipos de referencia de entrada, puede reconstruir los esquemas de control de la mayoría de los juegos de computadora 3D modernos.

6.8 Depuración de un script

Digamos que un guión no funciona. Como dice el buen doctor, te pueden pasar golpes y suspensiones. Si hay errores de sintaxis directos con su C #, el juego generalmente se negará a ejecutarse cuando golpee el juego, y se proporcionan algunos mensajes de error bastante útiles si usted construir los guiones desde dentro del editor. Vea abajo:

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 16

Estos errores generalmente no son los más difíciles de solucionar. Lo que puede ser más problemático son los errores semánticos sutiles, en los que ha escrito con éxito un archivo lleno de C # válido, pero no uno que haga lo que pensaba que haría. Si tiene uno de estos errores y tiene problemas para localizarlo, hay algunas cosas que puede intentar para mejorar la situación.

El primero es pausar la ejecución del juego y verificar la consola. Puedes pausar el juego haciendo clic en el pausa icono en la parte media superior del editor, y luego seleccionando consola desde el fondo de la ventana menú (o presionando Ctrl > Cambio > C). Incluso si no hay errores, las advertencias pueden ayudar a dar algunas pistas sobre lo que podría estar yendo mal.

Si esto no funciona, también puede intentar hacerse una idea sobre el estado de su secuencia de comandos imprimiendo el estado de las variables internas para validar que el programa está haciendo lo que cree que está haciendo. Puedes usar Depurar. Log (cadena) para imprimir el contenido de una cadena en la consola cuando la ejecución del programa llegue a esa línea. En general, si trabajas hacia atrás desde lo que crees que debería estar pasando a través de las cosas que deberían ser para que esto suceda, eventualmente llegarás a un punto en el que tus impresiones de depuración no harán lo que esperas que hagan hacer. Ahí es donde está tu error.

7. Ejemplo: Scripting Pong

Para construir Pong, descompongamos el juego en sus elementos principales: necesitamos una pelota que rebote entre las paletas al aumentar velocidad, necesitamos un marcador que sepa cuándo las bolas han pasado las paletas, y necesitamos un mecanismo para reiniciar la pelota cuando eso sucede Un buen primer paso sería agregar un cuerpo rígido no cinemático a la pelota, dos cuerpos rígidos cinemáticos al remos, deshabilitar la gravedad para todos ellos y asignar un material físico apropiado de los activos estándar (rebotar con combinar rebote ajustado a multiplicar).

A continuación, puede ver el guión de la pelota con comentarios explicativos. La pelota necesita cumplir algunos objetivos básicos: debe rebotar en un patrón complicado, siempre manteniendo movimiento en ambos ejes, y debe acelerar a un ritmo desafiante pero no imposible en la horizontal dirección.

BallHandler.cs

A continuación, debemos escribir nuestro paddle, que puedes ver a continuación. La paleta debe moverse hacia arriba y hacia abajo en respuesta a las pulsaciones de teclas (pero no fuera de ciertos límites). También necesita activar el sistema de partículas cuando choca con algo.

PaddleHandler.cs

Luego, necesitamos IA enemiga: algo que hará que la paleta del enemigo siga hacia la pelota a una velocidad fija. Para eso, usaremos Vector3.Slerp para la máxima simplicidad. También nos gustaría el mismo comportamiento de partículas que vemos en nuestra propia paleta.

EnemyAI.cs

Finalmente, necesitamos un script para actualizar el marcador y restablecer la pelota cuando se sale de los límites.

ScoreboardUpdater.cs

Con esos scripts adjuntos y las referencias completadas, cuando ejecutamos nuestro juego de Pong, ¡experimentamos el juego!

Programación de un juego con la unidad: una guía para principiantes juego de programa de unidad 18

Usted puede descarga mi demo de Pong, si desea ver todo lo que describí en acción. Se ejecuta en sistemas Windows, Mac y Linux.

8. Explorando la documentación / Aprendiendo más

Unity es un motor complejo con muchas más funciones de las que podría tratarse en una guía de este estilo, y eso es antes de incluir una amplia gama de extensiones de Unity (gratuitas y comerciales) disponibles en Internet. Esta guía le dará un buen punto de partida para desarrollar un juego, pero la autoeducación es una habilidad importante en cualquier esfuerzo, y doblemente aquí.

Un recurso crucial aquí es el Unity ScriptReference. ScriptReference es una base de datos de búsqueda, disponible para C # y Javascript, que tiene una lista de cada comando y característica de Unity, con descripciones de sus funciones y breves ejemplos de sintaxis.

Si tiene problemas con el editor y la interfaz de Unity, o simplemente le gustan los tutoriales en video como una cuestión de preferencia, hay una larga lista de alta calidad Video tutoriales de Unity Los mejores tutoriales de Unity 3D para principiantes¿Quieres desarrollar juegos con Unity, pero no sabes por dónde empezar? Pruebe uno de estos increíbles tutoriales de Unity 3D hoy. Lee mas disponible. Más extenso (pero menos amplio) tutoriales de texto para Unity también están disponibles en CatLikeCoding.

Finalmente, si tiene preguntas más allá del alcance de la documentación o tutoriales, puede hacer preguntas específicas en respuestas Unity3d.com. Recuerde que los voluntarios proporcionan las respuestas, así que respete su tiempo y busque primero en la base de datos para asegurarse de que su pregunta no haya sido respondida.

9. Construyendo su juego / Compilando una aplicación independiente

Cuando hayas construido algo de lo que estés orgulloso (o hayas terminado de clonar nuestro ejemplo de Pong un poco dudoso para practicar), es hora de mueva su juego desde el editor y conviértalo en algo que pueda publicar en Internet y obligue a sus amigos y familiares a jugar. Para ello, deberá crear una aplicación independiente. La buena noticia es que en Unity, esto es muy, muy fácil. Sin embargo, hay algunos posibles problemas que debe tener cuidado.

Para empezar, sepa que solo puede crear un proyecto sin errores. Con ese fin, asegúrate de tener la consola abierta a medida que construyes: hay algunas condiciones de error que el juego ignorará en el editor, pero aún abortará un intento de compilación. Esto solo arroja mensajes de error a la consola, sin resultados visibles en la pantalla, lo que puede ser frustrante si olvida verificar. Sin embargo, una vez que haya compilado su juego sin errores, puede seleccionar Configuración de compilación bajo la Archivo menú, o presione Ctrl > Cambio
> si. Aparecerá un cuadro de diálogo simple que te permite crear tu juego para varias plataformas.

Programación de un juego con la unidad: una guía para principiantes unidad programa juego 17

El proceso a partir de ahí se explica por sí mismo: seleccione sus opciones y presione construir; el juego te pedirá un directorio para instalar y colocará tanto el directorio ejecutable como el directorio de datos allí. Estos dos archivos se pueden comprimir y distribuir (solo asegúrate de no estar cobrando por un juego integrado en la demostración de Unity, ya que esto viola los términos del servicio).

10. Notas de cierre

Como con cualquier herramienta de desarrollo de juegos, la clave del éxito con Unity es el desarrollo iterativo. Debe construir en incrementos manejables: sea ambicioso, por supuesto, pero sea ambicioso en pequeños trozos y organice esos trozos de tal manera que, incluso si no cumples con tu ambición final, al menos terminarás con una coherencia producto.

Obtenga los elementos más cruciales primero: tenga una idea en mente de su producto mínimo viable, la cosa más simple y básica que podrías crear y aún sentir que has logrado algo que vale la pena. Llegue a ese proyecto mínimo viable antes de pasar a ambiciones más grandes.

Este tutorial te ofrece un buen punto de partida, pero la mejor manera de aprender Unity es crear un juego. Comienza a construir un juego, llena los vacíos en tu conocimiento a medida que surjan, y el flujo gradual de conocimiento erosionará las cosas que no sabes sorprendentemente rápido.

Si ha leído todo esto y está un poco abrumado por la codificación requerida con Unity, asegúrese de consultar cómo aprender desarrollo de juegos con Unity Learn Unity Learn es la forma más fácil de dominar el desarrollo de juegos¿Quieres comenzar a desarrollar tus propios juegos? Unity Learn es la mejor y más fácil forma de aprender y dominar lo que necesita saber. Lee mas y también lea nuestra guía sobre como hacer videojuegos sin ninguna programación Cómo hacer videojuegos sin ninguna programación¿Quieres hacer un videojuego pero no puedes codificar? ¡Luego usa un kit de construcción de videojuegos que te permite crear juegos sin necesidad de codificación! Lee mas .

Unity es una herramienta poderosa, y con un poco de exploración, puedes construir proyectos impresionantes con más rapidez de lo que esperas. Háganos saber lo que creó en los comentarios a continuación. ¡Nos encantaría verlo!

Escritor y periodista con sede en el suroeste, Andre está garantizado para permanecer funcional hasta 50 grados centígrados, y es resistente al agua hasta una profundidad de doce pies.