Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Capitulo 3 Unity 3D: Scripting y programacion en C# y Javasc

No description
by

Realform Studio

on 1 July 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Capitulo 3 Unity 3D: Scripting y programacion en C# y Javasc

Capitulo 3 Unity 3D: Scripting y programacion en C# y Javascript

Objetivo: Scripting en Unity 3D
Que son los Scripts en Unity?
Analicemos un ejemplo
Ejemplo 1: Evento de teclado y reaccion en escena.
Variables y Funciones
Ejemplo 2: Variables y funciones
El script por defecto de Unity
using UnityEngine;
using System.Collections;
Mi primer Juego:
Actividad: Crear una UI para el inicio del juego.
Controles de juego
Agregar controles a un objeto para interactuar con el:
Asociar un script a un objeto
Arrastrar y soltar el script desde la vista de proyecto hasta la jerarquía o incluso en la escena debe bastar para asignar dicho comportamiento al objeto.
Esto es posible gracias a la implementación de "MonoBehaviour"
Trabajando con el Api de Unity3D
para poder hacer uso de todas las funciones del motor, no es necesario aprenderlas de memoria, si no saber interpretar sus especificaciones.
Y antes de intentar algo, lo primero es conocer con qué clase queremos trabajar (y/o traducir si leemos codigo).
Componentes de comportamiento
Dentro de Unity3D, los scripts son componentes con los cuales es posible regular el comportamiento de objetos y eventos mediante la creación y asignación de variables.
Extenciones de funcionalidad
Mediante scripting, es posible dotar de inteligencia artificial, controlar escenas y desencadenar eventos de teclado o raton...
Hardcore Programming
Para esto es necesario entender como funciona el API de Unity por lo que es necesario que la revises a fondo.


Actividad 1
Crear un GuiHolder en el proyecto a partir de un "empty GameObject" y renombrarlo a GuiHolder en la vista de Jerarquia
Crear los "GuiTexture" necesarios para los botones de la pantalla inicial
Agregar las texturas de los botones
Actividad 2
Actividad 3
Agrega el siguiente Script para generar la funcionalidad de dichos botones que creaste primeramente e importaste a Unity.
Moviendo
using UnityEngine;
using System.Collections;

public class rotator : MonoBehaviour {
public float moveSpeed = 10f;
public float turnSpeed = 50f;
public float tiempoTranscurrido;
//private bool rotar=true;
// Use this for initialization
void Start () {

}

void OnCollisionEnter ( ) {
print ( "Impacto" );
}
void OnMouseOver( ){
print ("choose me");
}
// Update is called once per frame
void Update () {

tiempoTranscurrido=Time.realtimeSinceStartup;

//print(tiempoTranscurrido);
if(Input.GetKey(KeyCode.UpArrow))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

if(Input.GetKey(KeyCode.DownArrow))
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

if(Input.GetKey(KeyCode.LeftArrow))
transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

if(Input.GetKey(KeyCode.RightArrow))
transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);

// if(rotar==true){
// transform.Rotate(Vector3.up,turnSpeed*Time.deltaTime);
// }


}
}
Clase Translate y Rotate
Translate: function Translate (translation : Vector3, relativeTo : Space = Space.Self) :
void

Esta función nos permite mover el transform en la dirección y distancia indicados
en el parámetro de tipo Vector3 traslation. El segundo parámetro nos permite
decidir si el transform se moverá según sus propias coordenadas (locales) o lo
hará en base al espacio global.
Rotate: function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self)
: void
Esta función permite rotar un transform.
Script
using UnityEngine;
using System.Collections;

public class ExampleBehaviourScript : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.R))
{
gameObject.renderer.material.color = Color.red;
}
if(Input.GetKeyDown(KeyCode.G))
{
gameObject.renderer.material.color = Color.green;
}
if(Input.GetKeyDown(KeyCode.B))
{
gameObject.renderer.material.color = Color.blue;
}
}
}
Actividad:
Crear una escena con las siguientes caracteristicas:
Script
using UnityEngine;
using System.Collections;

public class VariablesAndFunctions : MonoBehaviour
{
int myInt = 5;

void Start ()
{
myInt = MultiplyByTwo(myInt);
Debug.Log (myInt);
}
int MultiplyByTwo (int number)
{
int ret;
ret = number * 2;
return ret;
}
}
Que son las variables?
Contenedores de información de diferentes tipos.
Ejemplo:
using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
}
y para controlar un objeto?
Ejemplo:
using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {
public string myName;
// Use this for initialization
void Start () {
Debug.Log("I am alive and my name is " + myName);
}
// Update is called once per frame
void Update () {
}
}
"REGLA"
Como norma general, cada componente, incluyendo los scripts, es una clase de Unity
Desde Unity, Como acceder?
Desde la pestaña Help -> Scripting Reference de Unity 3D para acceder a la
API de la versión que tenemos instalada.
Capacidad del API
Ejemplo de método cuyo objetivo es acceder a la componente de transformación del objeto de juego que se seleccione:
Ing. Andres Ivan Medina Herrera.
todo desde:
http://docs.unity3d.com/Documentation/ScriptReference/index.html
C#
añadir un Plano
añadir un cubo
añadir una luz a la escena
aplicar un "rigidbody" al cubo
Agregar el uso de gravedad
crear un script en el panel [project] y nombrarlo "comportamiento"
Agregar el codigo anterior al script
Arrastrar el script a la escena y soltarlo sobre el cubo
PROBAR
Sintaxis de una variable:
P.Ejm:
int entero = 5;
Ejercicio:
Agrega a una
funcion
una o varias variables y visualiza desde la consola su valor.
Crea un script.
Crea un objeto vacio.
arrastra el script al objeto.
play a la escena.
abre la consola.
visualiza el resultado.
Funcion o Metodo:
una
funcion
o Metodo, sera capaz de utilizar la informacion almacenada en las variables y devolvernos informacion procesada dentro de nuevas variables.
Tarea:
*Investiga cuantos tipos de metodos o funciones puede manejar Unity.
Realiza un Script en C# en el cual utilices los distintos tipos de funciones
sintaxis: tipo nombre_funcion(tipo parametros){
}
Scripting es un ingrediente esencial en todos los juegos. Incluso el juego más simple necesitará scripts para responder a los comandos del jugador y organizan eventos en el modo de juego que suceden cuando deberían. Más allá de eso, los guiones se pueden utilizar para crear efectos gráficos, controlar el comportamiento físico de los objetos o incluso implementar un sistema de Inteligencia Artificial para los caracteres en el juego
Que es el Scripting ¿?
Start ( ) nos viene heredado de la clase MonoBehaviour. Se trata de un método
sobreescribible (overridable) que el motor se encargará de ejecutar automáticamente en el primer frame de
ejecución de un objeto
Diseccion al primer script
Start()
update()
En el podemos especificar los valores por defecto con los cuales iniciar a los objetos del juego
Update ( ) implementa la clase "MonoBehaviour".

El motor se encarga automáticamente de ejecutarlo en cada frame de ejecución. Esto es, aproximadamente y salvo que modifiquemos ese valor, 60 veces por segundo.
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
void Update() {
transform.Translate(0, 0, Time.deltaTime * 1);
}
}
Ejemplo Update:
La función comúnmente mas utilizada para implementar cualquier clase de comportamiento de juego.
using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
}
El api de Unity te permitirá un control total de los componentes de los GameObjects
Funciones o metodos
poseen indicadores para mostrar si se trata de métodos estáticos
(static)
o metodos de clase.
y nos dan información sobre las variables u objetos que reciben como parámetros,
y nos indicarán si al final de su ejecución devuelven otra variable u objeto como resultado.
Si son instanciadas y su valor se conserva seran consideradas como variables estaticas o marcadas como
static
Sintaxis:
void NombreDelMetodo ( ) {
}
Crea un nuevo Script en Unity en C#
dentro del metodo start agrega lo siguiente:
print ( "Hola" );
Recrea la escena del plano y el cubo con rigidbody, agrega gravedad
Dentro del script y en una linea diferente a los metodos presentes, agrega un metodo de monoBehavior llamado
OnCollisionEnter ( ){
//y en su interior coloca lo siguiente:
print("BAAAANG!!! IMPACTO");
}
Actividad:
using UnityEngine;
using System.Collections;

public class rotator : MonoBehaviour {
public float moveSpeed = 10f;
public float turnSpeed = 50f;
public float tiempoTranscurrido;
private bool rotar=true;
// Use this for initialization
void Start () {

}

void OnCollisionEnter ( ) {
print ( "Impacto" );
}
void OnMouseOver( ){
print ("choose me");
}
// Update is called once per frame
void Update () {

tiempoTranscurrido=Time.realtimeSinceStartup;

//print(tiempoTranscurrido);
if(Input.GetKey(KeyCode.UpArrow))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

if(Input.GetKey(KeyCode.DownArrow))
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

// if(Input.GetKey(KeyCode.LeftArrow))
// transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
//
// if(Input.GetKey(KeyCode.RightArrow))
// transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);

if(rotar==true){
transform.Rotate(Vector3.up,turnSpeed*Time.deltaTime);
}


}
}
Crea en
photoshop
o
illustrator
los botones necesarios
Play
Exit
Title
asi como el titulo.
para importar a Unity como Asset y crear la pantalla Inicial
Full transcript