unity nextgen & scripting

25
By: Deodato Pechir. UNITY 3D MANUAL

Upload: alvaro-cortes-tellez

Post on 03-Jan-2016

54 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unity NextGen & Scripting

1

www.3dboxweb.com

By: Deodato Pechir.

UNITY 3D MANUAL

Page 2: Unity NextGen & Scripting

2

www.3dboxweb.com

INDICE DINAMICO – IMPLEMENTACÓN.

MENU:

1. STRUMPY SHADER EDITOR.

2. PHYSICS CLOTH.

3.1 ROAD & PATH TOOL.

3.2 RIVER TOOL.

3.3 TERRAIN TOOL KIT.

4. GAMEPAD CONTROLLER.

5. SAVE SCENE.

6. RAGDOLLS.

Nota: Si quieres regresar al Índice haz click sobre el Cubo en la parte superior derecha de cada página.

Page 3: Unity NextGen & Scripting

3

www.3dboxweb.com

1. STRUMPY SHADER EDITOR

Page 4: Unity NextGen & Scripting

4

www.3dboxweb.com

Stumpy Shader Editor:

Este editor permite generar shader complejos estilo UDK, sin tener que programar una línea de código se pueden generar shaders

avanzados para next-gen, animados o efectos especiales.

MASTER: Contenedor de todos los canales para la generación de shaders.

Albedo: Canal para asignar Color / Diffuse.

Normal: Canal pa ra crear el relieve de detalle del Normal Map.

Emission: Canal para hacer iluminar el shader.

Specular: Canal para controlar el tamaño de la absorción de luz.

Gloss: Canal para controlar el poder del specular.

Alpha: Canal para controlar la transparencia del shader.

Clip: Canal para asignar transparencia cutout.

Node: Comentarios que se pueden dejar en los nodos y atributos/valores,

Inputs: Permite agregar, mover (arriba/abajo) inputs, que se podrán controlar desde el inspector modificar sus valores.

Settings: Permite cambiar las características generales del material: Pixel shader, backface culling, fog, lightmaps, sombras, etc.

Nodes: Estos son los nodos que podemos usar como método grafico para programar los shaaders, estos se dividen en varias categorías:

Constant: Permite agregar nodos Convertir valores float Constan, float3 a constant, one, zero, etc.

Operation: Permite agregar funciones matemáticas para valores como add, multiplay, divide, min, max substrac, invertir, etc.

Functions: Permite agregar funciones entre nodos para agregar Mask, Normalize, Parallax, fresnel, Lerp, unpackNormal, etc.

Properties: Permite agregar nodos color, float, range, texturas2d, TexturasCubo, float

Inputs: Permite agregar nodos Screen Depth, Position, SinTime, Time

Page 5: Unity NextGen & Scripting

5

www.3dboxweb.com

Color: Nodo para cargar un Color desde el Inspector.

Text2D: Nodo con atributos de RGBA + UVS para conectar a un Sampler2D.

Sampler2d: Nodo para conectar una textura (sampler) y control de sus UVs.

SamplerCube: Nodo para cargar una textura desde el Inspector.

TextCube: Nodo para conectar una textura (Sampler) de cubo y control de Normal (vista).

Range: Nodo para crear un Slider en el inspector con un mínimo y máximo de valor.

Float: Nodo para crear un Campo de Texto en el inspector para poner valores.

Multiply: Nodo que permite multiplicar dos valores (nodos).

Add: Nodo que permite sumar (valores) o sobreponer (tex2d).

Lerp: Nodo que permite mezclar 2 Nodos A / B un Alpha.

Invert: Nodo para invertir el valor o textura.

UnpackNormal: Nodo que permite a un Tex2D se convierta en normalmap y tenga calidad como NormalMap (después de add/multiply)

Tex2dNormal: Nodo que permite automáticamente a un Sampler2D convertirse en NormalMap y mantener su calidad.

Substract: Nodo que permite hacer una resta entre dos valores o entre imágenes (Alpha en Clip).

Fresnel: Nodo que permite crear efecto de Fresnel con componente de View, para efecto 0 a 1 (Color 1 a Color 2).

ViewDirection: Nodo que se usa internamente para el nodo de Fresnel (View), para crear también efectos de reflejo en TexCube.

Splat: Separa canales o puede combinar todos los canales RGB.

Page 6: Unity NextGen & Scripting

6

www.3dboxweb.com

DIFFUSE:

SPECULAR & GLOSS:

Page 7: Unity NextGen & Scripting

7

www.3dboxweb.com

NORMAL:

EMISSION:

Page 8: Unity NextGen & Scripting

8

www.3dboxweb.com

CUTOUT:

DISTORTION Settings>Queqe Settings>Render Type: Transparent | NormalizedScreePosition: ScreenPos [0,1]:

Page 9: Unity NextGen & Scripting

9

www.3dboxweb.com

MATERIALES ANIMADOS: Visualizar: Versión PRO PREVIEW / Probar: Se debe de exportar como shader y ponerlo en un material.

MOVER: UV Pan permite mover las uvs en las opciones de x,y,z.

APAGAR/PRENDER: Sine permitira osilar entre los valores del LERP (RGB) y usamos Splat par conectar el Sine en canal Alpha.

Page 10: Unity NextGen & Scripting

10

www.3dboxweb.com

2. PHYSICS - CLOTHS

Page 11: Unity NextGen & Scripting

11

www.3dboxweb.com

Cloth:

Permite crear dinámicas con telas, para simular banderas, telas, redes y cuerpos suaves (Softbodies), se pueden crear de dos maneras:

1. GameObject> Create Other> Cloth: creara un plano que podemos usar como Cloth.

2. GameObject> Create Empty, Component>Physics>Interactive Cloth & Cloth Render. De esta manera podemos

seleccionar cualquier mesh que es dentro del Project y usarlo como Cloth.

Permite anclar al cloth a cualquier objeto dentro de la escena para que quede colgado.

Tip: Al objeto a anclar debe de estar lo suficientemente cerca para poder anclarlo.

Bending: Permite simular mayor espesor en la tela.

Streching: Permite que la tela se arrugue mas al doblarse.

Damping: Permite que la tela brinque de acuerdo a las fuerzas aplicadas.

Thickness: Permite trasladar la posición de la que se encuentra anclada el Cloth.

Gravity: Aplicar fuerza constante de gravedad.

Self Collision: Permitir en que entre el mismo cloth pueda colisionar.

External: es una aceleración de una fuerza constante directa al Cloth.

Random: es una aceleración de una fuerza aleatoria al Cloth.

Mesh: asignar un mesh como interactive cloth (Empty Objects).

Frction: cantidad de friccion del cloth, esto evita demasiado rebote o movimiento.

Density: la densidad del objeto para hacerlo más pesado.

Pressure: hace que los Mesh-Cloth (softbodies) se inflen o desinflen al colisionar.

Collision Response: Fuerza con la que hará rebotar a los objetos que le colisionen.

A. Tear Factor: Cuan lejos tiene que estar pegado el rigidbody para romperse.

A. Response: Cuanta fuerza debe de aplicarse al los rigidbodies pegados.

Tear Factor: Permite hacer que el cloth se pueda romper

Page 12: Unity NextGen & Scripting

12

www.3dboxweb.com

3. ADVANCED TERRAIN TOOLS.

Page 13: Unity NextGen & Scripting

13

www.3dboxweb.com

Road & Path Tool:

Permite crear caminos sobre un terreno aplanando donde este la ruta, así como poder pintar la ruta sobre la cual se trazo sobre el

terreno.

Pasos:

1. Click en: "New Path" para crear un nuevo “path Game Object”, en el panel de jerarquías, y lo seleccionamos.

2. Click en: "Add Path Node". Damos click sobre la ventana del editor para tener activa la ventana y presionamos la

tecla P y damos click sobre el terreno.

3. Continuamente se puede agregar un nuevo nodo al presionar “P” y click sobre el terreno hasta terminar el camino.

4. Click en: "Finalize Path" para terminar el camino y se deforme el terreno de acuerdo al camino creado.

5. Click en: "Smooth Path" para suvizar el terreno donde se encuentra el camino, esto es hata terminar el camino.

6. Click en: "Smooth Path Slope" para suavizar el terreno sobre los daldos, esto es hasta terminar.

7. Al terminar borramos el “Script”, y solo se deja el mesh creado.

Page 14: Unity NextGen & Scripting

14

www.3dboxweb.com

River Tool:

Permite crear caminos para generar ríos sobre un terreno, haciendo huecos hacia abajo del terreno, para después aplicar mesh de agua.

Pasos:

1. Click en: "New River" para crear un nuevo “river Game Object “- 'River' – y lo seleccionas.

2. Click en: "Add River Node". Y vamos a la ventana del “Editor” y presionamos la tecla “R” y damos click sobre el

terreno para iniciar el agregar nodos.

3. Continuamente se pueden agregar mas nodos con solo estar presionando la misma tecla y dar click cobre el terreno.

4. Click en: "Finalize River" para finalizar el rio y se deforme el terreno.

5. Click en: "Smooth River" para suavizar el terreno a los lados de la creación del rio.

6. Si la orilla del rio esta sobre saliente damos click en "Close River" para corregirlo, esto es solo hasta finalizar el rio.

7. Al finalizar eliminamos el script del rio.

Page 15: Unity NextGen & Scripting

15

www.3dboxweb.com

Terrain Tool kit:

Permite crear más variaciones sobre terrenos de manera más profesional y sencillo en pocos minutos de trabajo.

CREATE:

FRACTAL:

PERLIN:

TEXTURE:

EROSION :

Page 16: Unity NextGen & Scripting

16

www.3dboxweb.com

4. Xbox GamePad Controller.

Page 17: Unity NextGen & Scripting

17

www.3dboxweb.com

STICK Der

D-PAD

STICK IZQ

TRIGGERS

Page 18: Unity NextGen & Scripting

18

www.3dboxweb.com

GamePad Controller:

Se puede usar GamePad de Xbox para poder controlar las acciones de nuestro juego re mapeando los botones del control y sustituirlos

por el uso del teclado y mouse, generando juegos con orientación a consolas o PC NextGen. Edit>Project Settings>Inputs.

BOTONES: (La sensibilidad deberá estar a 1000).

A = joystick 1 button 0 B = joystick 1 button 1

X = joystick 1 button 2 Y = joystick 1 button 3

[LB] = joystick 1 button 4 [RB] = joystick 1 button 5

Back = joystick 1 button 6 Start = joystick 1 button 7

Stick Izq Botón = joystick 1 button 8

Stick Der Botón = joystick 1 button 9

Nota: Estos son los valores de “Type y Aixs” para esta categoría.

AXIS (Sensibilidad deberá de estar en 1 y digital 1000).

Stick Izq X Axis (Horizontal) = X Axis

Stick Izq Y Axis (Vertical) = Y Axis

Stick Der 4th Axis (Vertical) = 4th axis (Joystick)

Stick Der 5th Axis (Horizontal) = 5th axis (Joystick)

Triggers = 3rd Axis (joystick & Scrollwheel).

D-Pad (Horizontal) = 6th Axis (Joystick)

D-Pad (Vertical) = 7th Axis (Joystick)

Nota: Los triggers (3rd Axis), aunque son análogos, Unity los detecta en forma Digital (-1 a 0 a 1).

Page 19: Unity NextGen & Scripting

19

www.3dboxweb.com

5. SAVE & LOAD SCENE VALUES.

Page 20: Unity NextGen & Scripting

20

www.3dboxweb.com

Save Game (PlayerPrefs):

Para poder crear la opción de guardar una escena de un juego sobre la partida en la que estamos jugando, necesitamos usar una función

llamada PlayerPrefs, la cual nos permite guardar solamente variables del juego, en donde estas serán variables con información

de lo que queremos guardar como: posición del personaje, vida, sangre, ítems, checkpoint u opciones activadas del juego.

1. General: Se quiere que el personaje cuando pase por el ultimo Checkpoint activado y se use la opción de Salvar escena, este lo

haga a partir del último Checkpoint activado, así al reiniciar el juego el personaje inicie en la posición del Checkpoint Salvado.

2. Cargamos el paquete “Save_Scene_Start”, en data en Prefabs esta “Character_Prefab”, este lo insertamos en la escena.

3. En Data>Checkpoint_Prefab crearemos y asignaremos un script llamado “AI_CheckPoint”, así todos los prefab de este

tendrán el script dentro de la escena y no se tendrá que asignar de uno por uno el Script.

AI_CheckPoint

//Variable para saber que Checkpoint ha sido activado

var vCheckPoint : String;

//Variable para cargar el objeto a donde mandaremos la info del CP activado.

var Script_Salvar : AI_Save_Load;

function OnTriggerEnter () { // Mandar al gameObject Esfera el CP activado a su variable para guardar Script_Salvar.Salvar_CP = vCheckPoint;

print ("Checkpoint >"+vCheckPoint+"< Activado");

}

4. Ahora lo que haremos es que cada CheckPoint en su script (escena) le asignaremos una letra de identificación: vCheckPoint “A a D”.

Page 21: Unity NextGen & Scripting

21

www.3dboxweb.com

5. Creamos “2 Inptus” “Salvar” (Click Izq) y “Cargar” (Click Der).

6. Creamos un script llamado “AI_Save_Load” y lo asignamos a la esfera de arriba que servirá para mandarle información de

cuando se active cada Checkpoint.

AI_Save_Load

//Variable que indica que Checkpoint se guardara

var Salvar_CP : String = "A";

//Variable para insertar al personaje para después moverlo a otro CP.

var Character : GameObject;

function Update () {

//SAVE - Click Izquierdo, creamos Info para ahí almacenar la info

if (Input.GetButtonDown ("Salvar")) {

PlayerPrefs.SetString("info", Salvar_CP);

print ("CheckPoint: "+Salvar_CP+" Salvado");

}

//LOAD - Click Derecho, ReCargamos la escena

if (Input.GetButtonDown ("Cargar")) {

Application.LoadLevel ("Escena");

}

}

7. La Variable de Salvar_CP, le asignamos “A”, ya cuando inicie la

escena por primera vez será a partir de este CheckPoint.

8. En la variable “Character” cargamos al personaje de la escena,

para después mover esta variable a cada CP activado.

9. Ahora que esta creado el Script “AI_Save_Load”, haremos que

cada CheckPoint (A, B, C, D) en su variable de “Script_Salvar”

carguen al script de la Esfera: “AI_Save_Load”. //Extra: Permite NO destruir el objeto al iniciar la escena (funcion de Awake) DontDestroyOnLoad (); / DontDestroyOnLoad (transform.gameObject);

Page 22: Unity NextGen & Scripting

22

www.3dboxweb.com

10. Al iniciar la escena ejecutamos una función que ira por la variable almacenada en Windows, y dependiendo el CP se moverá al personaje al CP. function Start (){ CharacterMove (); Ó CharacterInstance (); } OPCION A: CHARACTERMOVE MOVER AL PERSONAJE QUE YA ESTA CREADO EN LA ESCENA

function CharacterMove (){ var Save_Load : String = PlayerPrefs.GetString("info");

print ("Check Point Cargado: " + Save_Load); if (Save_Load == "A"){

Character.transform.position = Vector3 (0,0,0); } else if (Save_Load == "B"){ Character.transform.position = Vector3 (0,0,11); } else if (Save_Load == "C"){ Character.transform.position = Vector3 (0,0,24);

} else if (Save_Load == "D"){

Character.transform.position = Vector3 (0,0,38); } } OPCION B: CHARACTERINSTANCE CREAR PERSONAJE DINAMICAMENTE Y MOVERLO

function CharacterInstance (){ var Save_Load : String = PlayerPrefs.GetString("info"); print ("Check Point Cargado: " + Save_Load); if (Save_Load == "A"){

Instantiate (Character, Vector3 (0,0,0), transform.rotation);

} else if (Save_Load == "B"){ Instantiate (Character, Vector3 (0,0,11), transform.rotation); } else if (Save_Load == "C"){

Instantiate (Character, Vector3 (0,0,24), transform.rotation); } else if (Save_Load == "D"){ Instantiate (Character, Vector3 (0,0,38), transform.rotation); } }

Page 23: Unity NextGen & Scripting

23

www.3dboxweb.com

Page 24: Unity NextGen & Scripting

24

www.3dboxweb.com

6. RAGDOLL – ANIMATION TO RAGDOLL

Page 25: Unity NextGen & Scripting

25

www.3dboxweb.com

Ragdoll – Animation to Ragdoll:

Para hacer que un personaje cuando muera se sustituya por un ragdoll, y este tenga la misma posición de rotación de cada uno de los

joints se hace lo siguiente:

1. Cargamos el paquete Ragdoll, dentro del paquete tenemos un mesh, un ragdoll y una animación de “Run”.

2. Creamos un script “AI_Ragdoll” y lo asignamos al personaje:

AI_Ragdoll

//Variable para cargar el RagDoll

var vRagdoll : Transform;

function Start (){ //Reproducción de animación

animation.Play ("run");

// Esperar

yield WaitForSeconds (1.5);

//Destruir Mesh animado

Destroy(gameObject);

// Instancia para cambiar por ragdoll

var InstanceRagdoll : Transform = Instantiate(vRagdoll, transform.position, transform.rotation);

// Ejecutar la función y mandarle la posición del ragdoll de cada Joint. ActivarRagdoll (transform, InstanceRagdoll);

} // Funcion que contiene la posición del personaje animado y la de ragdoll creado. function ActivarRagdoll (Character : Transform, RagdolLoad : Transform) {

RagdolLoad.position = Character.position;

RagdolLoad.rotation = Character.rotation;

// Igualar los valores de "transform" que tienen el mismo nombre.

for (var child : Transform in RagdolLoad) {

var JointTransforms = Character.Find(child.name);

ActivarRagdoll (JointTransforms, child);

}

}