tutorial unity3d 1_español

18
By_Natrostus Página 1 Traducido Por El Traducctor De Google, Puede Haber Alguna Falta. Disfrutenlo

Upload: omar-eduardo-sojo-romero

Post on 18-Jul-2015

378 views

Category:

Education


6 download

TRANSCRIPT

By_Natrostus Página 1

Traducido Por El Traducctor De Google, Puede Haber Alguna Falta. Disfrutenlo

By_Natrostus Página 2

INDEX

1. Parte 1: Introducción

Requisitos

Inicio de un nuevo proyecto

Configuración del entorno del juego

Agregar el personaje principal,

Adición de un arma

Crear el objeto de Misiles

Explosiones de misiles

Los efectos de sonido

Adición de una interfaz gráfica de usuario

Física

Agradecimientos

By_Natrostus Página 3

Parte 1 : Introducción

En este tutorial se detallará la forma en para hacer una sencilla Primera Person Shooter (FPS). No se introducir 3D fundamental programación de juegos los conceptos y dar consejos sobre cómo pensar como un juego programador.

Requisitos previos

Este tutorial se supone que está familiarizado con la interfaz de la Unidad y

la programación básica conceptos.

Inicio de un nuevo proyecto

descargar FPS_Tutorial.zip,

descomprima y abra el la carpeta del proyecto en Unity.

Importación de la Norma

Los activos del paquete Unidad de su paquetes estándar carpeta en la Unidad está instalado.

By_Natrostus Página 4

Después de la importación, que se

véase la Unidad está construido en el "estándar Activos "en el proyecto

Grupo. Cuando creamos nuevos activos, lo mejor es ponerlos en las carpetas que

los grupos de acuerdo a su función, por ejemplo, Rocket, explosión, Audio, etc.

Configuración del entorno del juego

Una vez que los bienes hayan sido importados, te darás cuenta de que hay muchas

carpetas en el Proyecto panel.

En el panel de proyectos, seleccione el mainLevelMesh a partir de

objetos / mainLevelMesh / mainLevelMesh.

En el panel Inspector, dentro de las opciones FBXImporter se encuentra el generar

Colisionadores "opción”. Activar esta opción. Si no hacemos esto, el jugador se

simplemente se caen a través del nivel (sin colisiones).

Arrastre el mainLevelMesh en la escena.

No hay necesidad de añadir una luz a la escena, el nivel ya está

totalmente lightmapped. La nivel de importación para todos los mapas de luz utiliza la

iluminación que nos permite utilizar probaked. Lightmaps son muy buenas para el

rendimiento, especialmente si usted desea crear una configuración de

iluminación compleja. Ahora está listo para añadir un carácter en el medio ambiente.

By_Natrostus Página 5

Agregar el personaje principal

Ahora vamos a añadir en un personaje para el jugador de controlar.La unidad tiene

incorporado en el prefabricados específicamente para un firstPerson

controlador. Esto se puede encontrar en el panel Proyecto en el activo estándar>

Prefabricados.

Para agregar el controlador en primera persona, haga clic en la flecha al lado de los activos en el estándar

el panel Proyecto, como una lista de activos aparecerá. Buscar la carpeta llamada prefabricadas o haga clic en la flecha en el lado izquierdo. Ahora debería ver la primera persona control de activos. Arrastre esto a la vista de la escena.

usted debe ver un objeto que representa el jugador del cilindro, 3flechas

grandes para alterar la ubicación en el espacio 3D para el objeto (si es que no se

ve a continuación, 3 flechas presione el botón "W" clave), y una malla blanca que

muestra vista del objeto (en que está buscando). El controlador de FPS es ahora

la cámara por defecto, moviendo este objeto, se cambia el punto de vista actual en la

vista del juego.También te darás cuenta que el controlador de FPS tiene un icono de la

cámara en la parte superior de la misma. Mueva el carácter tan que está por

encima del nivel del suelo en el medio ambiente.

Como ya no tenemos ninguna necesidad de que la cámara principal, puede

eliminarlo.

Pulse el botón Reproducir, ahora debería ser capaz de moverse por el nivel con

el ratón y el teclado (teclas de cursor para mover o W, A, S, D).

Ya ha creado un FPS muy simples, vamos a dar al jugador un arma.

By_Natrostus Página 6

Adición de un arma

Ahora vamos a dar al jugador un objeto de tipo granada para lanzar en el medio

ambiente. Para ello, tendrás que crear algo de Javascript para contar la Unidad sobre

el comportamiento del arma.

Entonces, ¿qué queremos hacer? Queremos permitir que el jugador dispara siempre

que la cámara está apuntando. Sin embargo, primero vamos a pensar en nuestro

carácter de juego y sus armas. Nuestro personaje del juego es visto a través de

la vista en primera persona, con la cámara en posición al nivel del ojo. Si el

jugador dispara a las armas, el arma debe ser lanzado desde cualquier lugar

sus manos, no del nivel de los ojos. Esto significa que tenemos que añadir en un

objeto de juego para representar el lanzador de la granada, y el lugar donde la mano

del jugador sería cuando tienen estas armas. Esto asegura que el objeto se dispara

partir de la correcta ubicación.

Crear el programa de lanzamiento de armas

En primer lugar, vamos a añadir en un juego de objetos para representar el lanzador

de granadas. Un objetivo del juego es cualquier elemento en el mundo en 3D (el

jugador, el nivel, sonidos), los componentes son las propiedades como objetivo del

juego tiene. Por lo tanto, se aplican a los componentes de los objetos del juego.

En el menú principal GameObject seleccione Opciones> Crear Empty y cambiar

el nombre del objeto a "Launcher" en el panel de la Jerarquía. Nota, este

objeto es invisible como es objeto vacío, sin embargo, es sólo un marcador de

posición para nuestro lanzador de misiles.

Ahora vamos a entrar en cerca de nuestro controlador de FPS para que podamos

ver dónde colocar el arma de lanzador.

Seleccione el controlador de FPS en el panel de jerarquía y asegurar que el

cursor se encuentra sobre la vista de escena, "F" de prensa (recuadro

seleccionado).Esto nos centra en el jugador (el elemento seleccionado).

Ahora seleccione el lanzador desde el panel de la Jerarquía y elija Game Object >Move to view desde el menú principal. Observe cómo el lanzador objeto se encuentra ahora cerca del controlador de FPS. Ahora podemos utilizar los mangos de situar el lanzador aproximadamente donde las manos deben estar.

NOTA Puede que el personaje hacia la izquierda o diestros

mediante la alteración de la ubicación de este objeto, sin necesidad de cambiar ningún código.

By_Natrostus Página 7

Asegúrese de que su diseño de la ventana La unidad está en modo de 2 por 3 , (Window >Layouts >2by 3 )y pulse el botón Reproducir. Haga Launcher está

seleccionado en la jerarquía ver y al mismo tiempo viendo la vista de la escena, mover el personaje alrededor. Usted cuenta de que nuestro objeto de lanzamiento no se mueve con nuestro personaje (se puede pulsar Play para detener el juego terrestre de ahora). Para resolver este problema, arrastre el Lanzador.

Para resolver este problema, arrastre el objeto lanzador the Main Camera object que pertenece al controlador de FPS en el panel de la Jerarquía. Está bien para

romper el Prefab conexión. Ahora ejecuta el juego de nuevo y ver la vista de la escena, el Lanzador de ahora debe moverse con nuestro carácter. Hemos asociado la Lanzador de objeto en el juego con un objeto que se mueve en los 3 ejes (la cámara).

Crear el objeto de Misiles

Vamos a crear el misil que se pondrá en marcha cuando el usuario hace clic en el botón de disparo.

Por ahora vamos a utilizar algo sencillo, una esfera. Crear un objetoprefabricado nuevo haciendo clic en Activos>Crear>Prefab de la barra

de menú de la Unidad, y cambiarle el nombre a Misiles.

Ahora Cree una Sphere ( GameObject >Create Other >Sphere ) .

Ahora arrastre el objeto del juego Esfera de la Jerarquía en el Panel de Misiles prefabricada en el panel Proyecto. El icono de la casa prefabricadaya va a

cambiar. Usted puede eliminar el objeto Esfera de la vista de la Jerarquía. SUGERENCIA Cualquier objeto en el juego que usted sabe que usted necesita para crear una instancia en tiempo de ejecución debería en general, es una casa prefabricada.

Escriba el código de Lanzador de Misiles

El controlador de FPS es una casa prefabricada que consta devarios objetos del juego y sus componentes. La Controlador de FPS es en sí misma una malla cilíndrica que sólogira alrededor del yaxis, por lo que si adjuntar el código de inicio (script) para esto, entonces no seremoscapaces de disparar hacia arriba y hacia abajo. Por lo tanto, vamos a colocar nuestro código de programa de lanzamiento para la cámara principal dentro de los FPS Controlador de que la cámara puede mirar en cualquier dirección. Vamos a crear nuestro primer código Javascript que describen el comportamiento del lanzador.

Seleccione Activos>Crear>JavaScript, lo que crea un documento en blanco con Javascript. Un nuevo activo aparece en el panel de

proyectos tituladoNewBehaviourScript. Cambiar el nombre de este script para missilelauncher. CONSEJO Puede especificar qué editor de código externo que desee utilizar la unidad, haga clic ende la Unidad>Preferencias y luego seleccionando la casilla de Script Editorexterno.

By_Natrostus Página 8

Crear un nuevo directorio dentro de la vista del proyecto denominado WeaponScripts, vamos a poner todas nuestras armas las

secuencias de comandos aquí. Mueve el Javascript en missile launcher aquí, y mover el prefabricado de Misiles también. Vamos a echar un vistazo a la completa Javascript paramissilelauncher. Puede escribir en el secciones de código a medida que siguen. Pensar desde un nivel alto, ¿qué es lo que queremos acer? Bueno, queremos detectar cuando el usuario ha dado en el botón de disparo, y luego una instancia de un nuevo misil y lanzarlo con una cierta velocidad hacia el lugar donde el usuario estaba buscando. Vamos a examinar el código en detalle:

Este es el comienzo de la escritura, que define las propiedades y declara una función llama Update.

Primero quiere comprobar si el usuario pulsa el botón de disparo."Feu 1" se asigna a dos el botón izquierdo del ratón y la configuración del teclado actual (esto puede ser editado desde el Editor de menú Ver> Ajustes del proyecto>De entrada). Declaramos una variable para contener una referencia a lainstancia de objeto. El tipo de este variable es Rigidbody, esto es debido a que el misil debe tener un comportamiento física. Para crear instancias de un objeto en la unidad que utiliza la función de crear una instancia mediante tres parámetros, el objeto de crear una instancia, la posición en 3D que se debe crear en el, y el a rotación del objeto debe tener. También existe otro constructor, consulte la API guía, pero vamos a utilizar este por ahora. El primer parámetro, proyectil, es el objeto que desea crear.Entonces, ¿qué es un proyectil de todos modos? El proyectil se establece que dentro del editor. Para permitir que esto suceda, se declara el proyectil variable fuera de cualquier función, lo cual lo hace público y expone al editor de la Unidad. El objeto del proyectil pudo haber sido creado en el código, sin embargo Si desea modificar (modificar) una variable, es mejor hacerlo desde dentro de la Unidad editor. El segundo parámetro, transform.position, crea el proyectil en la misma posición en el espacio 3D como el lanzador. ¿Por qué el lanzador? Bueno, el guión que estamos creando será unido a la lanzadera por lo que si queremos obtener nuestra posición actual en 3D, transform.position da que para nosotros (la palabra clave de transformación accede a la transformación del objetivo del juego donde se une el

var projectile : Rigidbody; var speed = 20;

function Update() {

if( Input.GetButtonDown( "Fire1" ) )

{ var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation );

By_Natrostus Página 9

guión). El tercer parámetro, transform.rotation, es similar al segundo parámetro, excepto que crea el misil con las propiedades de rotación mismas del lanzador: La siguiente parte del código que hace que nuestro movimiento de misiles. Para ello, le damos al misil velocidad, pero en el que la dirección (x, y, o z)? En la vista de la escena, haga clic en el controlador de FPS,las flechas de movimiento aparecen ("W" de prensa si las flechas no aparecen), uno es de color rojo, es una verde, y el otro es azul. El rojo denota el eje x, verde denota la yaxis, y denota azul La serie ZAXIS. En azul se apunta en la dirección que el jugador se enfrenta, queremos dar a nuestros misiles a una velocidad en la ZAXIS. La velocidad es una propiedad de instantiatedProjectile. ¿Cómo sabemos esto? Bueno, instantiatedProjectile es de Rigidbody tipo, y si nos fijamos en la API, vemos que la velocidad es una propiedad. Echa un vistazo a algunas de las otras propiedades que Rigidbody tiene, también. Para establecer la velocidad que necesitamos para especificar la velocidad en cada eje. Sin embargo, existe una ligera tema. Los objetos en 3D se especifican mediante dos modelos de coordenadas, locales y del mundo. En locales el espacio, las coordenadas son relativas al objeto que se está trabajando. En el espacio del mundo, coordenadas son absolutos: hasta, por ejemplo, es siempre la misma dirección para todos los objetos. Rigidbody.velocity se debe especificar en el espacio universal. Por lo tanto, cuando se asigna la velocidad usted necesita para convertir de la ZAXIS en el espacio local (la dirección de avance) a su respectivon mundo de la dirección del

espacio. Para ello, utilice el transform.TransformDirection función que toma una Vector3 como argumento. speed variable también está expuesta, por lo que podemos modificar en el editor. Finalmente, apagamos las colisiones entre el misil y el jugador. Sino lo hizo el misil podría chocar con el jugador cuando se crea una instancia. Mira esto en la API por debajo de IgnoreCollision.

instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) );

Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); }

}

var projectile : Rigidbody; var speed = 20; function Update() {

if( Input.GetButtonDown( "Fire1" ) ) { var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation ); instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) );

Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); } }

By_Natrostus Página 10

Introduzca el código descrito en Javascript missilelauncher y guardarlo. Conecte el guión missilelauncher al Iniciador en el controlador deFPS. Usted puede confirmar que la secuencia de comandos missilelauncher ahora está

unida al Launcher, mediante la selección de Lanzador de que en la vista de la Jerarquía y la comprobación deque el missilelauncher secuencia de comandos se muestra en el panel Inspector. El misil prefabricada que creado previamente no se ha asociadocon el proyectil variable en el script, por lo que debe hacer esto dentro del editor. La

variable de proyectil es Tipo Rigidbody, así que primero debemos asegurarnos

de que nuestro misil tiene un adjunto Rigidbody.

Haga clic en el misil en el panel Proyecto, a continuación, en la barra de menú principal, seleccione Componentes>Física>Rigidbody. Esto

añade un componente Rigidbody al misiles que quiera disparar. Tenemos que hacer esto como el tipo de objeto que queremos disparar debe coincidir con el tipo de la variable que expone en el guión.

Asociar el misil con la variable de proyectil en el guión. En primer lugar, haga clic en

Lanzador en el panel Jerarquía, observe el proyectil variable en elmissilelauncher guión de la sección en el panel Inspector. Ahora arrastra elprefabricado de Misiles de la el panel Proyecto y colóquelo en la variable de proyectiles.

Ahora bien, si se ejecuta el juego que usted será capaz de disparar a una pequeña esfera que se verse afectada por la gravedad.

explosiones de misiles

Ahora vamos a agregar una explosión cuando el misil choca con otro objeto. Para ello es necesario conectar el comportamiento de los misiles, es decir, crear un nuevo guión y añadir al objeto de Misiles juego.

Crear un script de nuevo en blanco mediante la selección deactivos> Crear>Javascript y cambio de nombre este nuevo

script de proyectil. Arrastre el nuevo guión a la carpetaen la WeaponScripts el panel Proyecto. Entonces, ¿qué queremos que el proyectil que hacer? Queremos detectar cuando el misil ha tenido una colisión y crear una explosión en ese punto. Veamos el código: Cualquier código que ponemos dentro de la función se ejecuta cada vez OnCollisionEnter el objeto de que el script se encuentra en colisión con otro objeto.

var explosion : GameObject; function OnCollisionEnter( collision : Collision ) {

var contact : ContactPoint = collision.contacts[0];

By_Natrostus Página 11

La principal tarea que queremos hacer dentro de la funciónOnCollisionEnter es crear una instancia una nueva explosión en el lugar en el espacio 3D donde el misilchocó. Así, ¿de dónde ocurra la colisión? El OnCollisionEnter función se pasauna colisión clase que contiene esta información. El punto en el que ocurrió la colisión es almacena en la variable ContactPoint. Aquí se utiliza la función de Instantiate para crear una explosión.Sabemos que crear una instancia toma 3 parámetros: (1) el objeto para crear una instancia, (2) la posición 3D, y (3) la rotación del objeto. Vamos a asignar esta a un objeto de juego con un sistema de partículas más tarde. También querrá ceder el presente con el editor, así que vamos a exponer a esta variable por lo que es público (se declara que fuera de cualquier función). El segundo parámetro, el punto de 3D en el que crear una instancia de la explosión fue determinó a partir de la clase de colisión en el punto 2. El tercer parámetro, la rotación para ajustar la explosión, necesita alguna explicación. Nosotros desea que la rotación de la explosión de modo que los yaxis de la explosión sigue a lo largo la superficie normal de la superficie del misil chocó con. Esto significa que para las paredes la explosión debe mirar hacia fuera, para los pisos que seencuentran dirigidas hacia arriba. Así que lo que queremos que hacer es traducir el yaxis de la explosión en el espacio local (la yaxis es hacia arriba), para la superficie normal (en el espacio universal) del objeto que sechocó con el. Esencialmente la rotación es decir "hacer el yaxis del punto de objeto en la misma dirección que el normal de la superficie con la que chocó '. Por último, queremos hacer que el misil desaparecer del juego, ya que ha chocado, que se realiza llamando al Destroy () con GameObject como un parámetro (GameObject denota el objeto está asociado con la secuencia de comandos). Aquí está el código completo para Projectile.js:

Agregue el código Javascript en el proyectil y guardarlo.

var rotation = Quaternion.FromToRotation( Vector3.up, contact.normal ); var instantiatedExplosion : GameObject = Instantiate(

explosion, contact.point, rotation );

Destroy( gameObject ); }

var explosion : GameObject;

function OnCollisionEnter( collision : Collision ) { var contact : ContactPoint = collision.contacts[0]; var rotation = Quaternion.FromToRotation( Vector3.up, contact.normal );

var instantiatedExplosion : GameObject = Instantiate( explosion, contact.point, rotation ); Destroy( gameObject ); }

By_Natrostus Página 12

Conecte el Javascript proyectil a la prefabricada de misilesmediante la selección de componentes>Secuencias de comandos>Proyectil.

Ahora tenemos que crear la explosión que queremos que ocurracada vez que choca con misiles.

En primer lugar, crear una nueva prefabricada (llámese explosión)que almacenará el activo explosión.

The standard assets contain a nice explosion prefab with a particle system and a light around the explosion. Drag the explosion prefab under Standard Assets/

Particles/explosion into the Hierarchy View.

Ajustar la configuración de la explosión hasta que estés satisfechocon su aspecto, a continuación, arrastre la explosión de la vista de la Jerarquía en

el Prefabexplosión en el Proyecto del panel. Ahora podemos asignar a la explosión de los misiles:

Asegurarse de que los misiles prefabricada se ha seleccionado, rellena la variable explosión arrastrando el objeto de explosión en el panel Proyecto a la

variable de explosión del misil en el panel Inspector.

Definir el comportamiento de explosión

Ahora tenemos que crear un guión más que definir el comportamiento de la explosión misma.

Create a new script, call it Explosion, and put it in the Weapons folder. Double click on the Explosion script to edit it.

Otro tipo de función común para las secuencias de comandos se denomina Inicio (). Código colocado dentro de este se ejecuta una sola vez cuando el objeto al que

pertenece se crea una instancia. Todo lo que quiero hacer por ahora es eliminar la explosión del juego después de una cierta cantidad de tiempo. A hacer esto usamos el Destroy () con un segundo parámetro que especifica cómo que esperar mucho tiempo antes de borrar. Veamos el código : La variable explosionTime se expone al editor de la Unidad para que pueda ser fácilmente ajustado.

Introduzca el código anterior en la secuencia de comandos de explosión, eliminando la función Update () en el proceso.

Conecte el guión de explosión a la explosión prefabricada, en primer lugar de hacer clic en la explosión prefabricadas y luego seleccionar los componentes>

Secuencias de comandos> Explosión. Observe cómo hemos tratado de agrupar el comportamiento tan claramente como posible, el código que se refiere a la explosión se encuentra dentro de la secuencia de comandos que se adjunta a la casa prefabricada de explosión.

var explosionTime = 1.0; function Start() {

Destroy( gameObject, explosionTime ); }

By_Natrostus Página 13

Ejecuta el juego y donde quiera que sus misiles choca con el medio ambiente, que debería ver el sistema de partículas explosión durante un período

detiempo.

efectos sonoros

El mundo del juego ha sido un poco tranquilo hasta el momento,vamos a añadir un efecto de sonido de nuestra explosión efecto. En primer lugar vamos a asignar un clip de audio a la prefabricadaexplosión.

Para permitir que el objeto de explosión al ser capaz de aceptar un clip de audio, se añade el

Componente de fuente de audio a la misma desde el menú principal (Component >

Audio> Audio Source). Se dará cuenta de una de las propiedades de este componente es el Audio Clip.

Asignar "RocketLauncherImpact" muestra de audio clip de la casa prefabricada explosión expuso variable. La unidad puede reproducir muchos

formatos de audio diferentes.

Ejecutar el juego de nuevo y nuestro efecto de sonido de explosióndeben ser escuchadas cuando cada uno misiles de impacto.

Adición de GUI

Ahora vamos a añadir una interfaz de usuario gráfica (GUI), más comúnmente conocida como las cabezas para arriba Display (HUD) para el juego. Nuestra sencilla interfaz gráfica de usuario sólo se va a incluir en una cruz.

Añadir Punteria Cree un directorio llamado GUI Crear un nuevo guión, lo llaman punto de mira y arrastrarlo a la carpeta de interfaz gráfica de usuario.

Escriba el siguiente código en Crosshair.js:

var crosshairTexture : Texture2D;

var position : Rect; function Start() { position = Rect( ( Screen.width - crosshairTexture.width ) / 2, ( Screen.height - crosshairTexture.height ) / 2, crosshairTexture.width, crosshairTexture.height ); }

function OnGUI() { GUI.DrawTexture( position, crosshairTexture ); }

By_Natrostus Página 14

Primero creamos dos variables. La primera variable es dondevamos a poner la imagen que vamos a utilizar para nuestra textura. La segunda variable es elrectángulo que se almacenar en la posición de la textura en la pantalla. Dentro de la función start () se calcula que la textura se dibuja. En el interior de el constructor que tiene 4 parámetros que determinan el rectángulodonde se encuentra y lo grande que es. El primer parámetro que nos dice dónde está ellado izquierdo del rectángulo es. El segundo parámetro establece la parte inferior del rectángulo. Los parámetros tercero y cuarto determinar la anchura y altura del rectángulo. Dentro de OnGUI () se utiliza la funcionalidad de la clase de interfaz gráfica de usuario para dibujar elementos en la pantalla. En este caso llamamos DrawTexture () y pasar de la posición ycrosshairTexture. Este función entonces se basará nuestra forma de cruz en el centro de la pantalla.

Guarda el script. Crear un nuevo objeto de juego vacío y cambiarle el nombre "GUI". Arrastre el punto de mira de secuencia de comandos en el juego de objetos GUI.

Seleccione el objeto de interfaz gráfica de usuario del juego y luego arrastrar la textura objetivo encontrar en texturas / objetivo desde el punto de vista del

proyecto a la variable de textura Crosshair Texture en la ventana Presione jugar y debe haber una cruz en el centro de la pantalla del juego

física

Ahora queremos que los objetos de nuestro entorno a comportarse de forma más natural posible, esto es lograrse mediante la adición de la física. En esta sección vamos aagregar objetos con el medio ambiente que se trasladará al ser golpeado con nuestro misil. En primer lugarhay algunos términos nuevos explicar.

By_Natrostus Página 15

Update Anteriormente, hemos entrado en código dentro de una función de actualización, de modo que podemos ejecutar que el código de cada cuadro. Un ejemplo fue el de detectar si el usuario había dado en el botón de disparo. Sin embargo, la tasa de marco no es un valor regular, ya quedepende de la complejidad del Esta escena, etc calendario irregular entre fotogramas puede llevara la física inestables. Por lo tanto, cada vez que desee actualizar los objetos en el juego que implicanla física (rigidbodies), código debe ser colocado dentro de una función FixedUpdate. El valor deltaTime en la unidad se utiliza para determinar el tiempo transcurrido entre la representación de dos años consecutivos marcos. Una distinción general entre actualización y funciones FixedUpdatees como sigue: · Update () el código dentro de la función por lo general las actualizaciones comportamiento de los jugadores, la lógica del juego, etc El valor de deltaTime no es coherente cuando se usa dentro de esta función. · FixedUpdate () el código dentro de esta función actualiza normalmente rigidbodies lo largo del tiempo (el comportamiento de la física). El deltaTime siempre devuelve el mismo valor cuando se le llama dentro de un FixedUpdate función. La Frecuencia Con La Que se llama FixedUpdate sí EspecíficaMEDIANTE el paso de Tiempo Fijo Propiedad en La Opción Editar del menú Ver> Ajustes del Proyecto> El Tiempo y You can also servicios Alterado. Este propiedad contiene el tiempo en segundos para obtener losfotogramas por segundo valor y tomar la recíproco de este valor. SUGERENCIA Al modificar el valor de paso de tiempo fijo (lo que significa fotogramas por segundo), tener cuidado para lograr un equilibrio, un pequeño paso de tiempole dará la física más estables (mayor precisión), sin embargo, el rendimiento del juego se verá afectada. Asegúrese de que el juego se ejecuta de forma rápida y la física parecen realistas. El plazo final para explicar en esta sección es el rendimiento. Esto puede ser considerado como una declaración para detener la ejecución de la función actual. Así que vamos a volver a nuestro juego, ¿qué es lo que queremos hacer: • Permite al usuario disparar un misil (ya realizada).

• Si el misil choca con otro rigidbody, determinar si hay otros objetos en la vecindad que han rigidbodies adjunta. • Para cada rigidbody dentro de la fuerza de la explosión, les dan una fuerza hacia arriba en dirección, haciendo que reaccione al misil. Veamos el código de la explosión Javascript actualización:

var explosionTime = 1.0; var explosionRadius = 5.0; var explosionPower = 2000.0; function Start()

{ //Destroy the explosion in x seconds, //this will give the particle system and audio enough time to finish playing Destroy( gameObject, explosionTime ); //Find all nearby colliders var colliders : Collider[] = Physics.OverlapSphere( transform.position, explosionRadius );

By_Natrostus Página 16

En primer lugar, determinar si hay algún objeto con colisionadorescerca de donde el misil aterrizó. El Physics.OverlapSphere función de la clase () toma dos parámetros: un Posición 3D y radio y devuelve una matriz de los colisionadores que están contenidos dentro la esfera definida.

Una vez que la matriz se ha obtenido, cada uno de los rigidbodiesunido a los colisionadores se puede dar una fuerza en una dirección determinada. A continuación se añade una fuerza (explosionPower) en la dirección hacia arriba (yaxis), en la ubicación donde el misil cayó (transform.position). Sin embargo, como el efecto de explosiones disminuir la distancia, la fuerza no debe ser constante durante todo el radio. Rigidbodies más cerca del borde de la circunferencia debería tener un efecto menor aplicado que los objetos en el epicentro de la explosión. Este efecto se toma en consideración por esta función. El explosionPower expuestos variables y pueden explosionRadius ser fácilmente ajustado para crear un efecto adecuado.

Si un emisor de partículas se une a nuestra casa prefabricada de explosión a continuación, iniciar las partículas que emiten, esperar a 0,5 segundos (rendimiento), y luego dejar que emite. Aquí está el código completo para Explosion.js:

//Apply a force to all surrounding rigid bodies. for( var hit in colliders ) {

if( hit.rigidbody ) { hit.rigidbody.AddExplosionForce( explosionPower, transform.position, explosionRadius ); } }

//If we have a particle emitter attached, emit particles for .5 seconds if( particleEmitter ) {

particleEmitter.emit = true; yield WaitForSeconds( 0.5 ); particleEmitter.emit = false; } }

By_Natrostus Página 17

Actualización de la explosión de Javascript con el nuevo código y guardar el script. Vamos a crear objetos para disparar. Crear un cubo en la escena y adjuntar una rigidbody. Duplica el cubo varias veces y se dispersan a su alrededor.

Prueba el juego de nuevo y tirar los objetos que han rigidbodiesunidos. ellos Ahora debe reaccionar con una fuerza hacia arriba. Además, trate de no disparar a

los objetos directamente, pero cerca de ellos. Estodemostrará claramente cómo la explosión al alza se aplica una fuerza sobre un radio y no sólo a cada objetdirectamente.

var explosionTime = 1.0; var explosionRadius = 5.0; var explosionPower = 2000.0; function Start() { //Destroy the explosion in x seconds, //this will give the particle system and audio enough time to finish playing

Destroy( gameObject, explosionTime );

//Find all nearby colliders var colliders : Collider[] = Physics.OverlapSphere( transform.position, explosionRadius ); //Apply a force to all surrounding rigid bodies. for( var hit in colliders ) {

if( hit.rigidbody ) { hit.rigidbody.AddExplosionForce( explosionPower, transform.position, explosionRadius ); } }

//If we have a particle emitter attached, emit particles for .5 seconds if( particleEmitter ) { particleEmitter.emit = true; yield WaitForSeconds( 0.5 ); particleEmitter.emit = false;

}

}

By_Natrostus Página 18

G u a r d a t u e s c e n a

Agradecimiento Original : Un agradecimiento especial a Ante Joachim (código) y EthanVosburgh (gráficos) por su ayuda en la elaboración de este tutorial.

Agredecimientos Traductor English Spanish : Un agradecimiento a Natrostus de (www.taringa.net) o Gamespub de (www.youtube.com) por traducir esta Guía oficial del Unity3D. Esta Guía es la misma que sale en la pagina oficial del unity3d la que te enseña los tutoriales. Solo cambia el idioma todo lo demás es idéntico. La traducción la hice frase por frase con el Google Traductor, así que puede que haya algunas que otras faltas de ortografía.

Proximamente… Proximamente traduire la parte 2 del tutorial de fps de la pagina de unity 3d. Gracias. Espero Que Os Haya Servido.

El siguiente tutorial de la serie te mostrará cómo construir sobre estas bases

mediante la introducción de conceptos más avanzados, tales como Amnistía

Internacional y múltiples

armas.