La programación de un juego con la unidad: una guía para principiantes
Tabla de contenido
§ 4.-Una breve introducción al paradigma orientado a objetos
§ 6-Ejemplo: elementos básicos de un juego
§ 9-Exploración de la documentación / Aprender Más
§10-Construcción de su juego / Compilación de una aplicación autónoma
1. Introducción
Una característica sorprendente de la economía de Internet es el aumento de los videojuegos independientes. Una vez que el dominio exclusivo de mil hombre, de varios millones de dólares de los estudios de triple A, una serie de conjuntos de herramientas que se han desarrollado acercar los recursos de desarrollo de juegos modernos en manos de individuos o pequeñas colecciones, ad-hoc de programadores y diseñadores. Estos equipos de desarrollo de juegos independientes han demostrado una agilidad y de tolerancia al riesgo de que, en muchos casos, les permite empujar la innovación juego más rápido que sus contrapartes grandes presupuestos. Un número de títulos indie sorprendentemente exitosas han estrenado en los últimos años, incluyendo Minecraft, Limbo, y chico súper carne.
En el paisaje de rápida evolución del desarrollo de juegos indie, la Unidad se ha convertido en algo así como un estándar de facto: su bajo costo, facilidad de uso y amplio conjunto de características lo hacen ideal para desarrollo rápido juego. Incluso grandes estudios como PCC (Desarrolladores de Eve Online) Utilizarlo para prototipado rápido conceptos de juego. La unidad ofrece un “motor de juego en una caja” - una física y motor de renderizado con ganchos para varios lenguajes de script, adaptables a prácticamente cualquier género de videojuego.Unidad - Grandes juegos 3D en múltiples plataformas & navegadoresUnidad - Grandes juegos 3D en múltiples plataformas & navegadoresLee mas
Mientras que la Unidad proporciona un editor visual para manipular el entorno del juego, la Unidad no es una ‘programación cero creador de juegos"Herramienta. La unidad requiere la capacidad de programar para producir resultados, sino que también le da una herramienta mucho más flexible y potente que cualquier programa de ‘fabricante de juegos` fuera posible. La unidad no va a hacer el trabajo por usted, pero sirve para bajar la barrera de entrada sustancialmente. Comenzando desde cero con C ++ y OpenGL, puede tardar días en llegar al punto en el que hay realmente algo prestado en pantalla. El uso de la Unidad, se tarda unos diez segundos. Unidad pone los elementos básicos de la creación del juego en manos de los programadores noveles de una manera rápida e intuitiva.
2. Las versiones de la Unidad
La unidad viene en dos sabores básicos: la versión profesional y la versión libre. Hay una serie de diferencias (se puede ver la lista completa aquí), pero, en términos generales, la versión Pro es compatible con una serie de mejoras visuales (como sombras suaves en tiempo real y post-procesamiento), y un gran número de relativamente menor características que son de gran ayuda para los juegos más complejos. Dicho esto, para la mayoría de los juegos relativamente simples es posible que desee construir, la versión gratuita de la Unidad es perfectamente adecuado. Vamos a romper las diferencias clave con más detalle a continuación para los interesados.
2.1 la fijación de precios
La versión libre de la Unidad es, por supuesto, gratis. Sin embargo, hay algunas limitaciones: la versión gratuita de la Unidad no puede obtener licencia a cualquier empresa con un ingreso anual de más de $ 100.000. Si bien este tipo de organizaciones están más allá del alcance de esta guía, si sospecha que pudiera estarlo una organización así, es probable que sea prudente a la primavera para la versión Pro.
La versión Pro de la unidad es $ 75 al mes, o $ 1500 para una licencia permanente, y no tiene límites en lo que puede hacer con los juegos creados con él. También hay una versión de prueba gratuita de 30 días disponible, lo que vamos a utilizar para esta guía, con el fin de darle tan completa una visión general de las funciones disponibles como sea posible. Una licencia de estudiante de un año también está disponible a través Studica por $ 129.
2.2 Caracteristicas
Hay muchas características ausentes en la versión gratuita de la Unidad. Sin embargo, las diferencias más importantes son las siguientes: la versión gratuita de la Unidad carece de una serie de opciones de representación que permitan un mejor aspecto, los juegos más rápido de marcha (LOD apoyo, espacio de pantalla de post-procesamiento, shaders avanzados, en tiempo real suave sombras, y renderizado diferido). También carece del sistema de animación mechanim completa, y algunas herramientas de IA. En general, para, proyectos complejos a gran escala, o proyectos en los que el rendimiento gráfico es importante, la versión pro es que vale la pena. Yo uso la versión Pro, porque desarrollar juegos de realidad virtual para el Oculus Rift, y el soporte de post-procesamiento de pantalla-espacio es necesario para interactuar correctamente con el auricular.Todo lo que desea saber sobre el Oculus Rift Dev-KitTodo lo que desea saber sobre el Oculus Rift Dev-KitEl futuro está aquí - el Oculus Rift finalmente ha comenzado a enviar. Es pronto todavía, pero si usted es uno de los pocos afortunados que respaldó o pre-ordenó el kit de desarrollo, he aquí una colección de ...Lee mas
Se puede extraer de una acumulación de alfa temprana de uno de mis juegos de realidad virtual, BeatRunner. Se le debe dar una idea de lo que hace posible la unidad.
3. Instalación de la Unidad
La unidad es fácil de instalar. Puede descargar el ejecutable aquí (para la instalación de OS X, haga clic en el enlace que dice ‘en desarrollo en Mac OS X?`). Let it descarga, lo dirige, y seguir las instrucciones del instalador. Una vez finalizada la instalación, una ventana titulada ‘activar su licencia de unidad` aparecerá. Marque la casilla ‘activar una de 30 días de prueba gratuita de Unity Pro` y haga clic en‘Aceptar `.
¡Felicitaciones! Usted sabe que tiene una prueba de 30 días de Unity Pro. Cuando el vencimiento de la prueba, si usted no quiere comprar la versión Pro, puede cambiar a la versión gratuita y mantener su contenido existente.
4. Una breve introducción al paradigma orientado a objetos
Antes de empezar con Unity, es importante que pasar los fundamentos un poco. La unidad es compatible tanto C # y javascript de programación- juego que vamos a trabajar con C # para este tutorial. En primer lugar, si usted nunca ha programado antes, poner este tutorial a un lado y pasar unos días de trabajo a través de Microsoft C # Language cartilla hasta que se sienta cómodo usando el lenguaje para tareas sencillas. Si ha programado antes en un lenguaje imperativo o orientado a objetos como C o Java, rozar la imprimación y familiarizarse con la forma en C # difiere de otros idiomas que ha utilizado en el pasado. De cualquier manera, no proceda con el tutorial hasta que se sienta cómodo para resolver problemas sencillos con C # (por ejemplo, si tuviera que pedirle que escriba un programa que imprima los primeros cien números primos, debe ser capaz de escribir ese programa sin consultar Google).Top 10 de los sitios web Código de ejemplo para los programadores profesionalesTop 10 de los sitios web Código de ejemplo para los programadores profesionalesLee mas
El concepto más importante a entender aquí es la paradigma orientado a objetos (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. funciones específicos de los objetos se denominan métodos. La idea aquí es la modularidad: aislado por tener cada objeto, y obligando a otros objetos para interactuar con él a través de sus métodos, se puede reducir el número de posibles interacciones intencionales - y, por extensión, los insectos. También se crea objetos pueden volver a utilizarse a voluntad más tarde sin ninguna modificación. En la Unidad, que será la construcción de estos objetos y adjuntarlos al juego (entidades cuyo comportamiento que van a gobernar).
Los objetos se crean instancias de las clases: una clase es simplemente un archivo que establece la definición de su objeto. Por lo tanto, si desea que un objeto ‘Mook` que se encarga de AI para un enemigo en su juego, que iba a escribir una clase‘Mook`, y después adjuntar el archivo a cada entidad enemiga. Cuando se ejecuta el juego, cada enemigo estará equipado con una copia del objeto ‘Mook`.
Colocación de un nuevo guión a un objeto se parece a esto:
En primer lugar, seleccione el objeto y vaya al inspector. A continuación, haga clic en el botón ‘Añadir Componente`.
Ir a ‘nuevo guión `, escriba el nombre que desee y haga clic en‘crear y añadir.
Ahora tiene un nuevo guión, que se puede editar haciendo doble clic sobre él!
Un archivo de clase es como la siguiente:
utilizando UnityEngine-público clase Mook : MonoBehaviour {privado flotador salud-vacío comienzo () {salud = 100-}vacío Actualizar(){Si (salud gt; 0){// búsqueda de jugador// si se encuentra con el jugador en la carretera, matarlo// si te disparan, eliminar una cantidad aleatoria de la salud}}}
Vamos a desglosar esta información:
- utilizando UnityEngine- -Esta línea le dice a C # que queremos utilizar las bibliotecas de la unidad, que nos permiten conectar con el motor del juego Unidad.
- public class Mook: MonoBehaviour {-Esta línea llegó a declarar la clase y su nombre ( “Mook”) -
- la salud flotador privada -Esto declara una variable de clase privada (que sólo se puede cambiar desde el interior de la clase). La variable se le asigna un valor de inicio ().
- vacío Inicio () {-Esto declara un método llamado ‘Inicio `. Start es un método especial que se ejecuta sólo una vez, cuando el juego se lanza inicialmente.
- vacío Update () {-Actualización es otro método especial, que se ejecuta en cada cuadro. La mayor parte de la lógica de juego se ve aquí.
- // si se encuentra con el jugador en la carretera, matarlo -Esta línea es un comentario (cualquier línea que comienza con una doble barra es ignorado por C #). Los comentarios se utilizan para recordar lo que determinados bits de código hacen. En este caso, este comentario se utiliza para sustituir a un bloque más complicado de código que realmente hace lo describe el comentario.
Junto con ‘Inicio` y‘actualización `, puede crear instancias de sus propios métodos con casi cualquier nombre. Sin embargo, los métodos que se crean no se ejecutará a menos que sean llamados. Vamos a declarar un método para una clase hipotética llamada myClass que suma dos números juntos.
Vídeo: Cómo Programar un Juego (Explicación Animada)
público flotador AddTwoNumbers(flotador un, flotador segundo){regreso un+segundo-}
Esto declara un método público (accesible a otros objetos) que devuelve un flotador, llamado “AddTwoNumbers”, que tiene dos flotadores como entrada (llamado a y b). A continuación, devuelve la suma de los dos valores como su salida.
Al llamar a este método desde dentro de la misma clase (por ejemplo, desde el interior de actualización) es el siguiente:
flotador resultado = AddTwoNumbers(1,2)-
Al llamar al método de otra clase es similar:
instancia myClass-flotador resultado = ejemplo.AddTwoNumbers(1, 2)-
De nuevo, esto sólo crea una instancia de nuestra clase, accede al método apropiado y la alimenta los números que queremos añadir, a continuación, almacena el resultado en ‘consecuencia `. Sencillo.
Si el script está asociado a un objeto que tiene propiedades especiales (como un emisor de partículas) que no se puede acceder bajo la luz del conjunto de parámetros GameObject, puede elegir a tratarlo como un tipo diferente de juego de entidad utilizando el método getComponent .
La sintaxis para que se parece a esto:
getComponentlt;Sístema de partículasgt;().Jugar()-
Si algo de esto es desconocido para usted, vaya de nuevo y pasar por la imprimación # C. Le ahorrará un montón de frustración a medida que avanzamos.
Vídeo: Programación de juegos para principiantes
5. Conceptos básicos de la unidad
En esta sección, vamos a trabajar nuestro camino a través de la mecánica básica del motor de la unidad. El flujo de trabajo en la Unidad es algo como esto: crear una entidad a tener un papel en el juego (GameObjects en blanco pueden utilizarse para tareas lógicas abstractas). Entonces, ya sea escribir o encontrar un archivo de clase, y añadirlo a la entidad como una secuencia de comandos (usando el botón `añadir el componente` en la vista `inspector`. A continuación, ejecutar, probar, depurar, repita hasta que funcione y pasar a la siguiente elemento del juego.
Unidad viene con una serie de pestañas vista básicos que se pueden colocar de diferentes maneras al gusto del usuario. Los cinco grandes son la pestaña ‘juego`, en la pestaña‘escena`, en la pestaña ‘inspector`, en la pestaña‘proyecto`, y la ‘pestaña jerarquía. La ficha de juego, cuando el botón de ‘juego` está deprimido, muestra una instancia de ejecución del juego que el usuario puede interactuar con y prueba. La pestaña ‘escena` ofrece una versión estática, editable del mundo de juego. La pestaña ‘inspector` permite al usuario modificar las entidades individuales en el mundo del juego seleccionándolos en la pestaña‘editor`. La pestaña ‘proyecto` permite al usuario navegar por los archivos del proyecto y los modelos de arrastre, materiales y otros recursos en la pestaña‘editor` para colocarlos en el mundo del juego. Por último, la pestaña ‘jerarquía` muestra todos los objetos en el mundo, lo que le permite encontrar objetos distantes en la escena, y entidades matrices entre sí haciendo clic y arrastrando. Véase el siguiente diagrama de las ubicaciones de todas estas cosas.Iniciar la creación de juegos en poco tiempo con Unity3D gratuitoIniciar la creación de juegos en poco tiempo con Unity3D gratuitoLee mas
5.1 Entidades unidad
5.1.1 mallas
Las mallas son la forma geometría 3D está representado en la Unidad. El usuario puede utilizar objetos incorporados ‘primitivos`(cubos, esferas, cilindros, etc.) de la unidad, o de importación sus propios modelos 3D de un paquete de modelado como Blender o Maya. La unidad es compatible con una variedad de formatos, incluyendo 3D Collada (.fbx), y .3 ds.Crear bellas modelos Orgánica 3D gratis con Sculptris [Windows & Mac]Crear bellas modelos Orgánica 3D gratis con Sculptris [Windows & Mac]Sculptris es una herramienta de diseño 3D por pixologic, creadores de la herramienta profesional 3D $ 699 ZBrush. Se trata de un buen hogar, pero a diferencia de su aplicación hermana, Sculptris es totalmente libre. Hemos cubierto Sculptris en ...Lee mas
Las herramientas básicas para el tratamiento mallas son los de escala, rotación, y los botones de traducción en la esquina superior izquierda de la interfaz. Estos botones añaden iconos de control de los modelos de la vista del editor, que luego pueden ser utilizados para manipularlos en el espacio. Para alterar las propiedades de textura o física de un objeto, seleccionarlos y utilizar la vista ‘inspector` para analizar los elementos‘cuerpo rígido` ‘material` y.
5.1.2 Elementos GUI
sprites GUI tradicionales y el texto se pueden visualizar a través del ‘interfaz gráfica de usuario de texto` y la GameObjects‘GUI Texture` en el editor. Sin embargo, una forma más sólida y realista para manejar elementos de la IU es utilizar el texto en 3D y GameObjects Quad (con texturas transparentes y un shader transparente apagado) para colocar elementos del HUD en el mundo de juego como entidades. En la vista ‘jerarquía`, estos elementos de juego se pueden arrastrar a la cámara principal para que sean los niños, asegurando que se mueven y giran con la cámara.
elementos de la GUI (texto y texturas) pueden tener su tamaño y escala ajustados utilizando los campos relevantes en la pestaña inspector.
5.1.3 materiales
Los materiales son combinaciones de texturas y shaders, y se pueden arrastrar directamente sobre los objetos del juego desde la ficha del proyecto. Un gran número de shaders vienen con Unity Pro, y se puede ajustar la textura unido a ellos mediante la ficha inspector para un objeto que son aplicados a.Cinco importantes Términos Juegos de PC ExplicadoCinco importantes Términos Juegos de PC ExplicadoSi se juega un juego en una consola, los detalles técnicos se manejan para usted. Algunos jugadores prefieren esto, pero los jugadores de PC a menudo disfrutan de un mayor grado de control que tienen sobre el ojo de un juego ...Lee mas
Para importar una textura, simplemente convertirlo en un archivo JPG, PNG o BMP, y arrastrarlo a la carpeta ‘activos bajo el directorio de proyecto Unity (que aparece en‘Mis documentos por defecto). Después de unos segundos, una barra de carga aparecerá en el editor. Cuando termina, usted será capaz de encontrar la imagen como una textura en la pestaña ‘proyecto`.
5.1.5 Luces
Las luces son GameObjects que el resplandor de proyectos en el mundo. Si no hay luces de la escena, todos los polígonos se dibujan al mismo nivel de brillo, dando al mundo un vistazo ‘plana`.
Las luces se pueden posicionado, girar, y tienen varias características internas que se pueden personalizar. El control deslizante ‘intensidad` controla el brillo de la luz, y la‘gama` controla la rapidez con que se desvanece. Las directrices de la vista de escena que muestran el rango máximo de la iluminación. Tocar con las dos configuraciones para lograr el efecto deseado. También puede ajustar el color de la luz, el patrón ( “cookie” que aparece en la superficie de la luz se apunta a, y qué tipo de erupción aparece en pantalla cuando se mira directamente a la luz. La cookie se puede utilizar para luz más realista falsa patrones, crean sombras falsas dramáticos, y simulan proyectores.
Los tres principales tipos de luz son ‘punto`,‘punto` y ‘direccional `. puntos de luz tienen un lugar en el espacio 3D y la luz del proyecto en una sola dirección en un cono de ángulo variable. Estos son buenos para linternas, reflectores, y, en general, le dará un control más preciso de la iluminación. puntos de luz se pueden proyectar sombras. Las luces puntuales tienen un lugar en el espacio 3D, y los echan luz uniformemente en todas las direcciones. Las luces puntuales no proyectan sombras. luces direccionales, por último, se utilizan para simular la luz del sol: que proyectan luz en una dirección como desde una distancia infinita. luces direccionales afectan a todos los objetos de la escena, y pueden producir sombras.
5.1.6 Sistemas de partículas
Los sistemas de partículas son el término para GameObjects unidad que generan y controlan cientos o miles de partículas de forma simultánea. Las partículas son pequeños objetos 2D, optimizadas mostradas en el espacio 3D. Los sistemas de partículas utilizan la representación simplificada y la física, pero pueden mostrar miles de entidades en tiempo real sin tartamudeo, lo que es ideal para el humo, fuego, lluvia, chispas, efectos mágicos, y mucho más.
Hay una gran cantidad de parámetros que se pueden manipular para lograr estos efectos, y se puede acceder a ellos mediante un sistema de partículas desove bajo el editor de componentes, seleccionando el sistema de partículas, y luego abrir la pestaña ‘inspector`. Se puede cambiar el tamaño, velocidad, dirección, rotación, color y textura de cada partícula, y establecer la mayoría de esos parámetros a cambiar con el tiempo también. Bajo el atributo `colisión`, si lo activa y configura el espacio de simulación para `mundo` que obtendrá partículas que chocarán con los objetos en el mundo, que pueden ser utilizados para una serie de efectos de partículas realistas, incluyendo la lluvia, moviéndose de agua, y chispas.
6. Ejemplo: elementos básicos de un juego
Para este tutorial, vamos a hacer un juego simple de Apestar. En esta sección, sólo tendremos que ir sobre la organización de los elementos básicos - el tutorial de scripting vendrá más tarde.Cómo recrear el uso de mesa clásico juego de ArduinoCómo recrear el uso de mesa clásico juego de ArduinoPong fue el primer videojuego nunca que llegó al mercado de masas. Por primera vez en la historia, el concepto de una "videojuego" fue llevado a la casa de la familia, gracias a la Atari 2600 -...Lee mas
En primer lugar, vamos a romper el juego de Pong en sus componentes básicos. En primer lugar, necesitamos dos paletas y una pelota. La pelota vuela fuera de la pantalla, por lo que querrá un mecanismo para restablecerla. También queremos texto que se mostrará la puntuación actual, y, en aras de mostrar que todos los elementos centrales de la Unidad, vamos a querer un efecto de partículas de fantasía cuando se golpea la pelota, y todo el juego tendrá que ser dramáticamente iluminado
Que se convierte en un objeto de bola (una esfera), un desovador, dos apoyos pala con emisores de partículas adjuntas, una entidad en 3D en texto, y un punto de luz. Para este tutorial, vamos a utilizar el material físico predeterminado ‘rebote `, con rebote combinan establecido a‘multiplicar`. Esto es lo que la configuración sea como, en diez capturas de pantalla:
En primer lugar, crear un puntal cubo para la paleta.
Escala de manera apropiada, duplicar, y poner una esfera entre las paletas para la bola.
A continuación, cree un objeto 3DText y la escala y colocarlo correctamente, cambiando el ‘tamaño de la fuente` atribuir a obtener una imagen menos pixelada.
A continuación, crear dos sistemas de partículas, escoger las características que desea, y adjuntarlos a las paletas.
A continuación, tendrá que posicionar y rotar la cámara de modo que enmarca la escena correctamente. Mientras se selecciona la cámara, se puede ver un pequeño adelanto de visión de la cámara en la esquina inferior derecha.
Antes de terminar, tenemos que crear dos cubos adicionales para ser parachoques, para evitar que la bola rebota fuera del área de juego. Podemos hacerlas invisibles desactivando la ‘malla de render` en la pestaña inspector.
Si se golpea el juego, ahora se puede ver los elementos básicos de nuestro juego establecidas. No van a hacer nada, pero vamos a llegar a eso!
Ahora que tenemos esa configuración, vamos a hablar acerca de lo que está involucrado en el procesamiento de estos elementos para hacer un juego.
7. Secuencias de comandos en la Unidad
Una vez que tenga una secuencia de comandos adjunta a un objeto, se puede revisar haciendo doble clic sobre él en el ‘inspector `. Esto abre MonoDevelop, el entorno de desarrollo predeterminado por la unidad. En esencia, Monodevelop es un editor de texto con características optimizadas específicamente hacia programación. Las palabras clave y los comentarios se destacan en los valores de azul y verde, y numéricos y cadenas aparecen en rojo. Si ha utilizado Eclipse IDE o de otro tipo de, MonoDevelop es muy similar. Se puede ‘construir` los scripts desde dentro del editor, para comprobar si hay errores de sintaxis, así:Los fundamentos de Programación de Computadoras 101 - Variables y tipos de datosLos fundamentos de Programación de Computadoras 101 - Variables y tipos de datosDespués de haber introducido y habló un poco sobre programación orientada a objetos antes y donde su homónimo viene, pensé que es hora de ir a través de los fundamentos absolutos de la programación de una manera no específica del idioma. Esta...Lee mas
En general, para obtener su secuencia de comandos para interactuar con la unidad, tendrá que hacer referencia a elementos que el objeto que sostiene el guión posee (se puede ver una lista de estos elementos en la pestaña ‘inspector` cuando se selecciona el objeto relevante). A continuación, puede llamar a métodos o conjunto de variables para cada uno de estos elementos para promulgar los cambios que desee.
Si desea una secuencia de comandos en un objeto de afectar a las propiedades de un objeto diferente, puede crear una variable GameObject vacío en el guión, y utilice el inspector para asignarlo a otro objeto en la escena. Las imágenes a continuación muestran lo que parece.
Una lista de los elementos de un objeto podría tener es la siguiente (tomada desde la vista de inspector de una de nuestras paletas en el ejemplo anterior):
- Transformar
- Cubo (filtro de malla)
- Box Colisionador
- Procesador de malla
Cada uno de estos aspectos del objeto puede ser influenciada desde un script. A continuación, vamos a ver exactamente cómo.
7.1 Transformar
La transformada funciones para un GameObject en la Unidad de control de los parámetros físicos de ese objeto: su escala, su posición, y su orientación. Se puede acceder a ellos desde dentro de un script como el siguiente:
transformar.posición = newPositionVector3-transformar.rotación = newRotationQuaternion-transformar.localScale = newScaleVector3-
En los ejemplos anteriores, las variables con nombre son de los tipos especificados en los nombres. Hay algunos detalles clave aquí: la posición y la escala son, como era de esperar, se almacena como Vector3s. Puede acceder a las x, y, z y componentes de cada uno (por ejemplo, transform.position.y le da la distancia de un objeto por encima del plano cero). Sin embargo, para evitar bloqueo de ejes, las rotaciones se manejan como Quaternions (vectores de cuatro componentes). Debido a que los cuaterniones de manipulación mano es poco intuitivo, se puede manipular rotaciones utilizando ángulos de Euler utilizando el método Quaternion.Euler de este modo:
transformar.rotación = Cuaternio.Euler(tono, guiñada, rodar)-
Si desea mover objetos sin problemas de un lugar a otro, encontrará el método Slerp de cuaterniones y vector3s votos. Slerp toma en tres argumentos - el estado actual, el estado final, y la velocidad del cambio, y sin problemas interpola entre ellos a la velocidad dada. La sintaxis es la siguiente:
transformar.posición = vector3.Slerp(startPositionVector3, newDestinationVector3, 1)-
7.2 renderizador
Las funciones de procesador de la unidad en le permiten controlar la forma en las superficies de los apoyos se representan en la pantalla. Puede reasignar la textura, cambiar el color, y cambiar el sombreado y la visibilidad del objeto. La sintaxis es la siguiente:
renderizador.habilitado = falso-renderizador.material.color = nuevo Color(0, 255, 0)-renderizador.material.mainTexture = myTexture-renderizador.material.shader = newShader-
La mayoría de estos tienen funciones muy claras. El primer ejemplo hace que el objeto en cuestión invisible: un truco útil en un número de situaciones. El segundo ejemplo se asigna un nuevo color RGB (es decir, verde) para el objeto en cuestión. La tercera asigna el principal difusa textura a una nueva variable de la textura. El último ejemplo se cambia el shader de material del objeto a una variable shader recién definido.
7.3 Física
La unidad viene con un sistema integrado motor de física que le permite asignar las propiedades físicas de los objetos y dejar que los detalles de su simulación pueden manejar para usted. En general, en lugar de tratar de poner en práctica su propia física utilizando un libro de texto y transformar el sistema, es más simple y más robusto de usar motor de la física de la unidad en la mayor medida posible.Rotura violenta, Drive & Construir: 3 impresionantes Física Areneros SimuladoresRotura violenta, Drive & Construir: 3 impresionantes Física Areneros SimuladoresLee mas
Todos los apoyos física requieren colisionadores. Sin embargo, la propia simulación real es manejado por un cuerpo rígido, que se puede añadir en la vista inspector. Rigidbodies pueden ser cinemática o nonkinematic. apoyos física chocan con cinemáticas (y efecto) nonkinematic apoyos física a su alrededor, pero no se ven afectados por ellos mismos colisión. apoyos cinemáticas estáticos son los objetos inmóviles proverbiales, y mover objetos cinemáticas son la fuerza imparable proverbiales (para el registro, cuando colisionan, simplemente pasan a través de unos a otros). Más allá de eso, se puede ajustar la resistencia al avance angular del objeto (la cantidad de energía que se necesita para girar), cambiar su masa, determinará si es o no está afectado por la gravedad, y se aplican fuerzas a ella.
Ejemplos:
cuerpo rígido.arrastre angular = 0.1f-cuerpo rígido.masa = 100-cuerpo rígido.isKinematic = falso-cuerpo rígido.useGravity = cierto-cuerpo rígido.AddForce(transformar.adelante * 100)-
Estos son todos bastante explica por sí mismo. La única cosa a tener en cuenta es el uso de ‘transform.forward.` de vector3 todos tienen tres componentes (.forward, .up y .RIGHT) asociados con ellos, que se puede acceder y gira con ellos ( “hacia adelante” es la dirección de la flecha azul en el editor). “Transform.forward” es simplemente el vector hacia delante para el objeto actual con magnitud 1. Puede ser multiplicado por un flotador para crear más fuerza sobre el objeto. También puede hacer referencia a “transform.up” y “transform.right,” y negar ellos para conseguir sus reveses.
7.4 Colisión
A menudo, cuando se construye un juego, desea una colisión que resulte en un estado de cambio de su código, más allá de simulación física. Para ello, se necesita un método de detección de colisiones.
Hay una cierta cantidad de trabajo de la preparación necesaria para detectar las colisiones en la Unidad. En primer lugar, al menos uno de los objetos de la colisión de un cuerpo rígido necesita no cinemática que se le atribuye. Ambos objetos deben tener colisionadores correcto, el ajuste a no ser desencadenantes. La velocidad total de ambos objetos debe ser lo suficientemente baja que en realidad chocan entre sí, en lugar de simplemente saltando a través de unos a otros.
Si usted tiene todo lo que cuidado, se puede comprobar si hay colisión mediante la colocación de un método especial de detección de colisiones en una secuencia de comandos adjunta al objeto desea comprobar colisión con. El método se verá así:
vacío OnCollisionEnter(colisión otra){// hacer las cosas aquí}
Este método se ejecutará automáticamente durante la primera trama que otro objeto toca su objeto. La entidad de colisión ‘otro` es una referencia al objeto que se golpea. Puede, por ejemplo, hacer referencia a su ‘GameObject,`‘cuerpo rígido,` y ‘transformar` características de manipular de varias maneras. Mientras `OnCollisionEnter` es probablemente la función más común que va a usar, también se puede utilizar `OnCollisionExit` y `OnCollisionStay` (con la sintaxis de otra manera idéntica y uso), que activan durante la primera trama que deje de chocar con un objeto y durante cada cuadro que está en colisión con un objeto, respectivamente.
A veces, también puede ser útil para hacer lo que se llama raycasting. En raycasting, una línea infinitamente delgada (un ‘rayo `) se lanza a través del mundo desde algún origen, a lo largo de algunos vectores y, cuando golpea algo, se devuelven la posición y otros detalles de la primera colisión. El código para un raycast se ve así:
golpe RaycastHit-Si (Física.raycast(transformar.posición, -vector3.arriba, fuera golpear)){flotador distanceToGround = golpear.distancia-}
Esto arroja un rayo de la posición del objeto actual a lo largo -Vector3.up (hacia abajo), y vincula la variable ‘hit` en el primer objeto que choca con. Una vez que el rayo ha golpeado algo, puede acceder hit.distance para determinar a qué distancia está, o hit.GameObject para manipular el objeto de llegar.
Raycasts de este tipo pueden ser utilizados para los tiradores para determinar que el arma de señaló a, o para seleccionar objetos cuando la cámara tiene en ellos, o para ciertos estilos de movimiento mecánico.
7.5 corrección de tiempo
Un factor importante a tener en cuenta cuando se está manipulando objetos de esta manera tiene que ver con la velocidad de fotogramas. No importa lo cuidadosamente que optimizar, tasa de fotogramas siempre variarán, y usted no quiere que su velocidad de juego que varían en consecuencia. Si otra persona corre el juego en un equipo más rápido de lo que lo desarrolló, usted no desea que el juego se ejecute a doble velocidad.
La forma de corregir para esto es multiplicando los valores que se está usando en el momento en que se tardó en hacer que el último fotograma. Esto se hace mediante el uso de ‘Time.deltaTime. Esto cambia la velocidad efectiva de cualquier variable que está incrementando cada fotograma de ‘cambio por cuadro` a‘cambio por segundo,` y probablemente debería hacer este cambio a cualquier valor que está incrementando o disminuyendo cada cuadro.
7.6 Las fuentes de audio y oyentes
Ahora que hemos cubierto cómo crear, hacer, y objetos de control, vamos a hablar de otro sentido que los videojuegos pueden servir: a saber, el sonido. La unidad es compatible con dos tipos de sonidos: 2D y 3D sonidos. sonidos 3D varían su volumen, basado en la distancia, y distorsionan a medida que se mueven en relación a la cámara- suena 2D no lo hacen. sonidos 2D son apropiadas para la voz en off y música de fondo, y los sonidos 3D se aplica a los sonidos generados por los acontecimientos en el mundo. Con el fin de cambiar si es o no es un sonido 3D, seleccionarlo en la vista ‘proyecto`, cambiar a la vista‘inspector` y seleccione la opción correspondiente en el menú desplegable, a continuación, pulse el botón ‘reimportación`.
Con el fin de reproducir el sonido en realidad, tendrá que adjuntar una `AudioSource` a un prop (prop desea que el sonido que se originan a partir, en el caso de un sonido 3D. A continuación, tendrá que abrir el `AudioClip `campo y seleccione el archivo de sonido.
Puede utilizar myAudioSource.Pause () y myAudioSource.Play () para controlar los archivos de sonido. Se pueden ajustar los comportamientos de atenuación, el volumen y el desplazamiento Doppler de los sonidos en la pestaña ‘inspector` de la AudioSource.
7.7 Entrada
Un juego que no tiene ninguna entrada del usuario no es mucho de un juego. Hay una gran cantidad de diferentes tipos de entrada se puede leer en, y casi todos ellos son accesibles a través de los objetos de entrada y de código clave. Algunas declaraciones de entrada de muestra (que tienen unos valores evaluados cada cuadro) están por debajo.
vector3 MousePos = Entrada.mousePosition-bool isLeftClicking = Entrada.GetMouseButton(0)-bool isPressingSpace = Entrada.Obtener la clave(Clave.Espacio)-
Las funciones de estas líneas es principalmente explica por sí mismo. El uso de estos tres tipos de referencia de entrada, se puede reconstruir los esquemas de control de la mayoría de los juegos de ordenador 3D modernos.
Vídeo: Curso GameMaker Studio: Tus Primeros 5 Videojuegos (8 horas)
7.8 Depuración de una secuencia de comandos
Digamos que un guión no funciona. Como dice el buen doctor, bangups y problemas de bloqueo pueden pasar a ti. Si hay errores de sintaxis en firme con su C #, el juego en general, se negará a ejecutar cuando se pulse el juego, y se proporcionan algunos mensajes de error bastante útil si ‘construir` los scripts desde el editor. Vea abajo:
Estos insectos no suelen ser los más difíciles de solucionar. ¿Qué puede ser más problemático son los errores semánticos sutiles, en los que usted ha escrito con éxito un archivo completo de validez C # - no uno que hace lo que pensaba que sería. Si usted tiene uno de estos errores, y tiene problemas para rastrearlo, hay algunas cosas que usted puede tratar de mejorar la situación.
La primera es para pausar la ejecución del juego, y comprobar la consola. Puede hacer una pausa en el juego haciendo clic en el icono de ‘pausa` en la parte media superior del editor, y luego seleccionando‘consola` de la parte inferior del menú ‘ventana`(o pulsando Ctrl-Shift-C). Incluso si no hay errores, advertencias todavía pueden ayudar a dar algunas pistas sobre lo que podría ir mal.
Si esto no funciona, también se puede tratar de obtener una idea sobre el estado de la secuencia de comandos mediante la impresión del estado de las variables internas para validar que el programa está haciendo lo que creo que está haciendo. Puede utilizar debug.log (String) - para imprimir el contenido de una cadena a la consola cuando la ejecución del programa golpea esa línea. En general, si se trabaja al revés de lo que cree que debería estar pasando a través de las cosas que se deben hacer que suceda, con el tiempo se llega a un punto en el que las impresiones de depuración no hacen lo que se espera que hagan. Ahí es donde está el error.
8. Ejemplo: Scripting Pong
Para construir Pong, vamos a romper el juego en sus elementos básicos: necesitamos una pelota que rebota hacia atrás y adelante entre las paletas a una velocidad creciente, necesitamos un marcador que sabe cuando las bolas han pasado las paletas, y necesitamos un mecanismo para reiniciar la pelota cuando esto sucede. Un buen primer paso sería añadir un cuerpo rígido no cinemática a la bola, dos rigidbodies cinemáticas para las paletas, deshabilitar gravedad para todos ellos, y asignar un material físico apropiado de los activos estándar ( `rebote` con `rebote combinar` puesto a `multiplicar).
A continuación, puede ver la secuencia de comandos por el balón con comentarios explicativos. La pelota tiene que cumplir con algunos objetivos básicos: debe rebotar en un patrón complicado, manteniendo siempre el movimiento en ambos ejes, y se debe acelerar a un ritmo difícil pero no imposible en la dirección horizontal.
BallHandler.cs
A continuación, tenemos a nuestra escritura de remo, que se puede, de nuevo, ver a continuación. La pala tiene que moverse hacia arriba y hacia abajo en respuesta a las pulsaciones de teclas (pero no fuera de ciertos límites). También es necesario para activar el sistema de partículas cuando choca con algo.
PaddleHandler.cs
A continuación, necesitamos IA de los enemigos: algo que va a causar remo del enemigo para seguir hacia el balón a una tasa fija. Por eso, vamos a estar usando Vector3.Slerp para la máxima simplicidad. También nos gustaría el mismo comportamiento de las partículas que vemos en nuestra propia paleta.
EnemyAI.cs
Por último, necesitamos un script para actualizar el marcador y restablecer la pelota cuando sale.
ScoreboardUpdater.cs
Con estos scripts adjuntos y las referencias rellenados, cuando nos encontramos nuestro juego de Pong, tenemos experiencia de juego!
Puede descargar mi demo Pong, si desea ver todo lo que he descrito en acción. Se ejecuta en sistemas Windows, Mac y Linux.
9. Exploración de la documentación / Aprender Más
La unidad es un motor complejo, con muchas más características que podrían ser factibles de cubierta en una guía de este estilo, y eso es antes de incluir la amplia franja de las extensiones de la unidad (libre y comercial) disponibles en Internet. Esta guía le dará un punto de partida sólido para el desarrollo de un juego, pero la auto-educación es una habilidad importante en cualquier empresa, y por partida doble aquí.
Un recurso crucial aquí es la ScriptReference Unidad. El ScriptReference es una base de datos, disponible tanto para C # y javascript, que tiene una lista de todos los comandos de la unidad y la función, con la descripción de sus funciones y breves ejemplos de sintaxis.
Si usted está teniendo problemas con el editor y la interfaz de la Unidad, o simplemente como el vídeo tutoriales como una cuestión de preferencia, hay una larga lista de tutoriales de vídeo Unidad de alta calidad disponibles. Más amplios (pero menos amplios) tutoriales de texto para la Unidad también están disponibles en CatLikeCoding.
Vídeo: Nuestro primer gráfico: JFrame, JPanel, método paint. Programación de juegos para principiantes 1
Por último, si usted tiene preguntas más allá del alcance de la documentación o tutoriales, puede hacer preguntas específicas en answers.Unity3d.com. Recuerde que las respuestas son proporcionados por voluntarios, por lo que respeta su tiempo y buscar en la base de datos primero para asegurarse de que su pregunta ya no ha sido contestada.
10. La construcción de su juego / Compilación de una aplicación autónoma
Cuando usted ha construido algo que está orgulloso de (o que haya terminado la clonación de nuestro ejemplo un poco chunga Pong para la práctica), es el momento de mover el juego desde el editor y convertirlo en algo que se puede publicar en Internet y la fuerza sus amigos y familiares para jugar. Con el fin de hacer eso, usted necesita para construir una aplicación independiente. La buena noticia es que en la unidad, esto es muy, muy fácil. Hay, sin embargo, algunos hipo potenciales que usted querrá tener cuidado.
Para empezar, sabe que sólo se puede construir un proyecto sin errores. A tal fin, asegúrese de que tiene la consola abierta a medida que construye: hay algunas condiciones de error que el juego va a pasar por alto en el editor, pero todavía abortar un intento de construir. Esto sólo se vuelca mensajes de error a la consola, sin resultados visibles en pantalla, que puede ser frustrante si se olvida de comprobar. Una vez que tenga su juego sin errores compilación, sin embargo, puede seleccionar ‘Build Ajustes en el menú‘Archivo`, o pulse Ctrl-Shift-B. Con ello se abre un cuadro de diálogo simple que le permite construir su juego para varias plataformas.
El proceso a partir de ahí se explica por sí mismo: seleccione sus opciones, y golpeó ‘acumulación` el juego le pedirá un directorio para instalar, y colocará tanto el ejecutable y el directorio de datos allí. Estos dos archivos pueden ser comprimidos juntos y distribuidos (sólo asegúrese de que no se carga para un juego construido en la demo Unidad, ya que esto viola los términos del servicio).
11. Cierre de Notas
Al igual que con cualquier herramienta de desarrollo de juegos, la clave del éxito con Unity es el desarrollo iterativo. Usted tiene que construir en incrementos manejables - ser ambiciosos, por todos los medios, pero ser ambiciosos en pequeños trozos, y organizar esos trozos de tal manera que, incluso si están a la altura de su máxima ambición, usted por lo menos terminar con un producto coherente . Obtener los elementos más importantes en primer lugar: tener una idea en la mente de su ‘producto mínimo viable,` el más simple, más escueto cosa que posiblemente podría crear y todavía se siente como si usted logrado algo que vale la pena. Llegar a ese proyecto viable mínima antes de pasar a las ambiciones más grandes.
Este tutorial le ofrece un punto de partida muy fuerte, pero la mejor manera de aprender es la Unidad mientras que la construcción de un juego. Empezar a construir un juego, a llenar los vacíos en su conocimiento a medida que surgen, y el flujo gradual de conocimiento erosionar las cosas que no conoces a una velocidad sorprendente. La unidad es una herramienta poderosa, y con un poco de exploración, que puede ser la construcción de proyectos impresionantes con ella más rápido de lo que cabría esperar. Buena suerte, y disfrutar de la Unidad!
Guía Publicado: Febrero del 2014