Vous êtes sur la page 1sur 11

UNITY

Para crear objetos solo vamos a ventana GameObject> 3D Object>

INSPECTOR

H
I
E
R
A
R
C
H
Y

CONSOLA

En la ventana consola aparecerá notificaciones de errores o de algún evento.


INTRODUCCIÓN A LOS
SCRIPTS DE UNITY
Unity soporta dos lenguajes nativamente:
 C# (pronunciado C-sharp), un lenguaje estándar de la industria similar a Java o C++
 UnityScript, un lenguaje diseñado específicamente para uso con Unity y modelado tras
JavaScript

Se puede crear un nuevo script desde el menú Create en la parte superior izquierda del panel
del Proyecto o seleccionando Assets > Create > C# Script (o JavaScript) desde el menú
principal.

Si eligen C# Script el editor tendrá el siguiente contenido:


using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use esto para inicializar


void Start () {

// Actualización es llamada una vez por cuadro


void Update () {

}
}

La función start es la que iniciará una sola vez, mientras que la función Update se ejecutará
progresivamente.

Si eligieron JavaScript saldrá el siguiente contenido:


#pragma strict

function Start () {

function Update () {

El script creado puede adjuntarse a un GameObject(Objeto) ubicado en la sección Hierarchy


ubicado a lado izquierdo, con tan solo arrástralo hacia él. Por defecto las variables creadas
serán públicas.
Por ejemplo, si insertamos estas líneas:

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {


public string myName;

// Use esto para inicializar


void Start () {
Debug.Log("I am alive and my name is " + myName);
}

// Actualización es llamada una vez por cuadro


void Update () {

}
}

Si adjuntamos a un GameObject estas líneas, en el Inspector ubicado al lado derecho nos


aparecería este cuadro:

En la consola ubicada en la parte inferior nos saldría lo siguiente:


Javascript
Si queremos que un objeto se deslice a través de direcciones utilizaríamos la siguiente
estructura.
1. #pragma strict 1.
2. var movimiento=aquí escribimos la velocidad; 2. Definimos el nombre de la variable que queremos
3. function Start () { 3.
4. 4.
5. } 5.
6. 6.
7. function Update () { 7.Función que se ejecutará por cada cuadro (Frame)
8. transform.Translate(x,y,z); 8.Digitamos la función que queremos que realice
9. } 9.

Si describimos las líneas la línea 2. Nos indica que nuestra variable será movimiento que es
igual a… (Velocidad de desplazamiento)
La línea 8. Básicamente nos dice que el objeto tendrá una transformación de tipo traslación el
con el eje de coordenadas (x, y, z) y escribiremos nuestra variable donde queremos que se
mueva el objeto. Ejemplo:
transform.Translate(0,0,movimiento);

Quiere decir que el objeto se moverá a lo


largo del eje “z” con una velocidad de…
La velocidad puede ser editable en el
inspector…

La velocidad en que se mueva el objeto va a depender del ordenador.


Si queremos un movimiento universal por los ordenadores tendríamos que agregar lo
siguiente:
transform.Translate(0,0,movimiento*Time.deltaTime);

De esta forma se moverá de igual manera en cualquier ordenador (movimiento por


tiempo)>>>>Time.deltaTime<<<<<
Si quieren que se mueva en dos o tres direcciones a la vez, solo declararíamos más
variables de movimiento, algo como esto:
1. var movimientoX=aquí escribimos la velocidad;
2. var movimientoY=aquí escribimos la velocidad;
3. var movimientoZ=aquí escribimos la velocidad;

El eje de coordenadas tendrá esta forma:


Rojo: X

Verde: Y

Azul: Z
Si queremos hacer que un objeto se escale, utilizaríamos lo siguiente:

#pragma strict

var escalaCubo:float=1.0f;
var escalaVel:float=0.1f;
function Start () {

function Update () {
escalaCubo = escalaCubo+(escalaVel*Time.deltaTime);
transform.localScale=Vector3(escalaCubo,escalaCubo,escalaCubo);

Definimos las variables, ésta vez colocamos el comando float luego la variable y
establecemos el valor al final ira la letra f como reconocimiento de float(dato flotante) haciendo
referencia a números decimales.
Establecemos la función, en este caso le decimos que el objeto se adicione el resultado de la
velocidad por cada segundo.
escalaCubo = escalaCubo+(escalaVel*Time.deltaTime);

Luego ordenamos una transformación de tipo escala en el(los) eje(s) (X, Y, Z) esto sería:
transform.localScale=Vector3(escalaCubo,escalaCubo,escalaCubo);

Cuando agregamos ésta script a un objeto en el inspector saldrá lo siguiente donde puedes
editar la escala y la velocidad
Si queremos hacer que un objeto se mueva siguiendo un objetivo haríamos lo
siguiente:
 Primero:
Creamos un Javascript y digitaríamos lo siguiente:

#pragma strict
var Objeto : Transform;
function Start () {

function Update () {
transform.LookAt(Objeto);
GetComponent(NavMeshAgent).destination = Objeto.position;
}

Definimos nuestra variable que tiene una transformación pero no es igual a ella por eso lo
ponemos con “:” .
Queremos que un objeto siga a otro; básicamente que lo vea y lo siga, en ese caso ponemos
dos funciones:
1. Que tenga una transformación de tipo mirar a nuestra variable (objeto).
2. Obtenemos un componente con NavMeshAgent que siga la posición de la variable.
La script que creamos agregamos al objeto que queremos que se mueva:

Nos pedirá el objeto que debe seguir.


Escogemos el objeto y lo arrastramos a la opción de Objeto.
En la script creada hemos agregado un componente
NavMeshAgent pero no está agregada a la escena.
Nos vamos a nuestro objeto que se va a mover Inspector>Add
Component>Nav Mesh Agent.
Luego seleccionamos por donde se va a mover y lo marcamos como Static.

Luego nos vamos a Window > Navigation


Seleccioamos Bake
Y nos saldra en celeste la superfice por donde pasará.
Si queremos multiplicar un objeto haríamos lo siguiente, pero en este caso crearíamos
un C# script:

using UnityEngine;
using System.Collections;

public class spawn : MonoBehaviour {


public GameObject prefab;

private int count = 0;

// Use this for initialization


void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.Space))
{
GameObject cubo = Instantiate(prefab, transform.position,
transform.rotation) as GameObject;
cubo.name = "cubo" + count++;
Destroy(cubo, 5);
}
}
}

Como es un C# declaramos como pública nuestra variable le decimos que es un GameObject


de tipo prefab. Luego declaramos otra variable como privada y que cuente números enteros
private int count = 0;
Si queremos que se accione luego de una acción pondremos la condición que activará, si
queremos que se active automáticamente no lo pondremos.
if (Input.GetKey(KeyCode.Space))

Con esto le estamos condicionando que si la entrada de tipo llave, y la llave sea un código de
tipo (introduciremos el nombre de una tecla).

Nuestra variable GameObject con nombre cubo se Instancie (el prefab con transformación de
tipo posición y con transformación de tipo rotación) como GameObject.

Las réplicas se denominarán “clones” para tener un conteo pondremos que nuestro cubo
tenga nombre y que sea igual a el nombre de nuestro GameObject le adicionamos la cuenta
de clones.

cubo.name = "cubo" + count++;

Con estos códigos nuestro cubo se multiplicará infinitas veces sin desaparecer de escena.
Si queremos que los clones desaparezcan lo destruiremos con el comando Destroy, en el
ejemplo como hemos reconocido el orden de nuestros clones, digitamos:

Destroy(cubo, 5);

Esto nos dice que destruirá los clones de nuestro GameObject cuando pase 5 segundos de
su existencia, esto lo hará para cada clon.

Crearemos un cubo (puede ser otro) luego lo arrastraremos a nuestro Project:

Nuestro objeto se convertirá en un Prefab

Procederemos a crear un Objeto vacío:

Nos aparecerá como GameObject, nuestra


script lo arrastraremos allí.

Será por donde aparecerán nuestros


clones.

Nos pedirá un Prefab el cual colocaremos el que


queremos que se multiplique.

Si pusimos la condición se multiplicará cada vez


que presionemos esa tecla, sino se multiplicará
inmediatamente.

Vous aimerez peut-être aussi