Mostrando las entradas con la etiqueta script. Mostrar todas las entradas
Mostrando las entradas con la etiqueta script. Mostrar todas las entradas

miércoles, 20 de julio de 2016

Script - Cronómetro descendente con UI #Unity - Down Timer UI




En esta entrada procedo a actualizar el código que mostré tiempo atrás en la publicación sobre "Cronómetro descendente" porque con las últimas actualizaciones de Unity, es más fácil trabajar el HUD o elementos que se muestran en pantalla con el apartado de Interfaz de Usuario o UI que trae el propio motor de Unity, por consecuente esta publicación incluye como trabajar con Canvas y Texto.

martes, 18 de agosto de 2015

#Script Mostrar cursor en pantalla de juego o cambiar cursor en pantalla

En algunos videojuegos se sustituye el típico icono del mouse (flecha) por iconos relacionados al juego, como por ejemplo una mano, una mira, una esfera, o cualquier otro icono que se identifique con el juego. 

miércoles, 4 de febrero de 2015

#Script Cronometro descendente #Unity - Down Timer


El siguiente script es de formato *js o JavaScript y permite contar el tiempo de forma descendente.

Muy útil cuando deseas controlar el tiempo que transcurre en una escena. Este script te permite darle un tiempo de vida a la escena, por ejemplo en el juego de Mario Bros los usuarios tienen un tiempo límite para completar el nivel o sino mueren. 

martes, 4 de noviembre de 2014

#Script Mirar a otro objeto #unity3d #javascript C#


El siguiente Script está basado en propiedades básicas predeterminadas por Unity, mediante la cual podemos hacer que la cámara o un personaje siga por así decirlo con la "vista" a otro objeto.

miércoles, 27 de agosto de 2014

#Script Colisión o Collision GameObject #unity3d #javascript

La colisión o collision en #unity3d es la acción por la cual un gameobject u objeto choca con otro. Luego de este encuentro se puede indicar que el mismo desaparezca o que realice otra acción por ejemplo bajar vidas. ¿Pero como hacer para que se active la colisión cuando toca otro objeto y este no le cae encima?

Ejemplo tomado del sitio oficial de Unity3d - Sección Tutoriales.


En #unity así como existe el OnTriggerEnter para el ingreso en zonas sensibles, existe también el OnCollisionEnter. Este permite activar la acción cuando el elemento entre en contacto con otro. Pero deben tener en cuenta que esto solo funciona cuando el elemento que tiene el script cae y toca el otro. O por lo menos a mí solo me funciona de esa forma. 


Para lo cual he recolectado un video tutorial de Will Goldstone en el cual ejemplifica lo indicado.


En el ejemplo que vimos el cubo posee el script y se activa al chocar el cubo con el plano. El script que se usa en este video es el siguiente. La acción Debug.Log("mensaje"); sirve para enviar un mensaje por consola, en este caso para validar que el cubo toca el piso.


* JS
-------------------------------------------

function OnCollisionEnter (col : Collision)
{
    if(col.gameObject.name == "prop_powerCube")
    {
        Destroy(col.gameObject);
    }

}
-------------------------------------------


Pero que pasa si no queremos que la colisión se active cuando cae el objeto sobre el player sino cuando es tocado por el player o cuando este lo roza. Por ejemplo cuando un enemigo nos ataca.

Para solucionar este inconveniente debemos de usar el siguiente Script en JS o JavaScript para que al momento que el player toque un objeto este comience a enviar un mensaje. Por ejemplo si deseamos que cuando el player toque una pared esta le quite vidas, o para que cuando el enemigo colisione con el player este le quite vidas también.

* JS
-------------------------------------------

function OnControllerColliderHit ( hit:ControllerColliderHit  ){
if( hit.gameObject.tag == "Enemigos"){
Debug.Log ("me están matando");
}
}

-------------------------------------------

Con este script estamos indicando que cuando el Player colisione con el objeto de tag Enemigos se envíe el mensaje. Como observar en este caso quien posee el script es el Player y necesitar crear los tags necesarios para los enemigos, objetos u otros a usar.

Si no sabes como crear tags puedes revisar el siguiente link. 

miércoles, 20 de agosto de 2014

#Script cambiar textura skybox #unity3d #javascript

En el desarrollo de videojuegos llega un momento en el cual es necesario cambiar la textura que posee el skybox o cielo por otra diferente al activar un objeto o entrar a un nivel diferente. 

Ejemplo: cuando deseamos que al pasar por una zona sensible el cielo se oscurezca o se aclare.

En el siguiente script en Javascript indicaré de forma sencilla como afectar la textura del Skybox.



* JS
-------------------------------------------
var mat1 : Material;
var mat2 : Material;

function OnTriggerEnter () {
      RenderSettings.skybox = mat2;
}

function OnTriggerExit () {
      RenderSettings.skybox = mat1;
}

-------------------------------------------

El Script posee dos variables de tipo "material" en el cual almacenaremos nuestra textura del cielo o del skybox. Es necesario indicar que el material debe de contener las 6 texturas para que el efecto visual sea el apropiado. 



Estos materiales se activaran al momento que entramos o salimos de una zona sensible y en el código RenderSettings accedemos a la opción skybox. Que es idéntico al hacerlo por medio del menú principal en la opción de Edit / RenderSettings.

Y con eso ya tenemos el script que al ingresar a la zona sensible se muestre el material 2 y al salir se muestre el material 1. Osea que se cambie el cielo al entrar a la zona.

lunes, 18 de agosto de 2014

#Script boton touch salir juego #unity3d c# - game touch button

Cuando se elaboran juegos para dispositivos móviles como Android o IOS siempre es necesario elaborar el botón de salir de la aplicación para permitir al usuario regresar al uso normal de su teléfono.


El siguiente script está codificado para su uso TOUCH o TÀCTIL.



El lugar donde se coloque el botón de salir puede ser en el menú, así como también en cada paso de un nivel a otro. Esto permitirá al usuario regresar a su dispositivo sin ningún inconveniente y sobretodo si molestia.

El siguiente código se encuentra desarrollado en C#.

* C#
-------------------------------------------

using UnityEngine;
using System.Collections;

public class boton_salir : MonoBehaviour {

public GUITexture boton;
void Update () {
if (Input.touchCount > 0) {
for (int i = 0; i < Input.touchCount; i++) {
Touch t = Input.GetTouch (i);
if (t.phase == TouchPhase.Began) {
if (boton.HitTest (t.position, Camera.main)) {
Application.Quit();
}
}
}
}
}
}

-------------------------------------------

Como pueden observar en el código la sentencia para salir de la aplicación es : Application.Quit();
Se ha creado una variable para almacenar la textura del botón. Y en el Update se valida la acción de tocar la pantalla, en otras palabras se valida el touch.
El primer if sirve para el funcionamiento de la opción touch. Y el segundo y tercero sirva para validar que el botón sea el que se haya presionado. Por eso la validación if (boton.HitTest (t.position, Camera.main))

viernes, 1 de agosto de 2014

#Script muestra vida #unity3d c#

En el post antrior indicaba como hacer una barra de vidas por medio de JS. En este  post indicaré como realizar un HUD de vidas pero basado en texturas. En otras palabras los famosos corazones de vida que disminuyen en los videojuegos al momento que un enemigo nos ataca.



El script que se muestra a continuación está elaborado en C#. Para lo cual hemos de crear dos script, uno para mostrar los corazones en pantalla y otro para disminuir los corazones al ingresar a la zona sensible.

Para el desarrollo del ejemplo he utilizado la opción de GUITexture de la barra de Herramientas. Gameobject/Creater Other/ GUI Texture. Esta opción generará una textura en pantalla la misma que podemos asignarle la textura que deseamos mostrar. La textura a mostrar van a ser los 3 corazones que se muestra en la imagen.


El primer script que escribiremos será el que se encargue de validar si la variable vida ha disminuido y de ser así que cambie a la textura de dos corazones, un corazón y ningún corazón. Como el script se encuentra en c# favor tener el consideración el nombre del archivo para que no genere conflicto al copiar el script. El archivo lo llamaremos "hud_corazones".

* C#
-------------------------------------------
using UnityEngine;
using System.Collections;

public class hud_corazones : MonoBehaviour {

public GUITexture  image;
public Texture2D  Image_01; 
public Texture2D  Image_02;
public Texture2D  Image_03;
public Texture2D  Image_04;
public static int vida = 3; // variable vida

void Update () {
if (vida ==3) {
image.texture =  Image_01;
}
if (vida ==2) {
image.texture =  Image_02;
}
if (vida ==1) {
image.texture =  Image_03;
}
if (vida ==0) {
image.texture =  Image_04;
}
}
}
-------------------------------------------

Como se observa en el script se han creado varias variables de tipo Texture2D para almacenar las diferentes texturas cada vez que van disminuyendo las vidas. Adicional se adicionó una variable de tipo int llamada vida, en esta variable almacenaremos las vidas. Y como se observa en la funcion Update ( en c# void Update) hemos de validar si vida es = 3 se muestra la textura con 3 corazones, y si llega a 0 se muestra la textura sin corazones. 

Vista del GUITexture con los dos script.

Hasta este punto ya hemos desarrollado todo lo que necesitamos para que funcione. Nos tocará crear un cubo que sirva de enemigo para que al momento de entrar en el, este afecte a la variable vida y la disminuya y así que se muestren menos corazones.
El script para disminuir las vidas lo llamaremos "enemigo" y también se encuentra escrito en c#

* C#
-------------------------------------------
using UnityEngine;
using System.Collections;

public class enemigo : MonoBehaviour {
void OnTriggerEnter () {
hud_corazones.vida = hud_corazones.vida - 1;
}
}
-------------------------------------------

Y con eso hemos terminado.
Si tienes alguna duda o consulta no dudes en comentar.

miércoles, 30 de julio de 2014

#Script Barra de vida #unity3d - Health Bar

En todo videojuego existen diferentes formas o maneras de mostrar las vidas del player o enemigos. Por lo tanto he considerado importante realizar un script basado en JS (javascript) el cual muestre por medio de una barra, las vidas del personaje principal.


Como se indica en la parte superior este script está realiazado en JS.

En primera instancia lo que debemos de tener en consideración es la relación existente entre los siguientes scripts. Primero debemos de crear el entorno en el cual nuestro player se va a ver afectado por el enemigo.

En mi caso he elaborado un plano, un cubo (enemigo), y el player (Primera Persona). Se pueden optimizar los scripts a realizar pero en mi caso he elaborado 3 Scripts para que se aprecie la mecánica.

El primer Script "muestra_vidas" se lo colocaremos a la cámara o a un gameobject vació, puesto que este script permitirá que se muestren las texturas de la vida del player. Este script posee la variable progress en la cual almacenaré la vida total del player. Las variables de tipo Texture2D sirven para adicionar las texturas de la barra de vida y la del fondo de la barra. Las texturas a usar pueden estar en formato PNG.

Adicional se han aumentado variables de tipo float que permiten almacenar el tamaño de la pantalla a visualizar y realizar una operación matemática para devidir la pantalla en cinco partes iguales. Pero esto se explicará en otra publicación.

*JS
------------------------------------------------
var progress : float= 0;
var progressBarEmpty : Texture2D;
var progressBarFull:Texture2D;

static var ScreenX:float;
static var ScreenY:float;
static var AnchoxPantalla: int;
static var AltoxPantalla:int;

function OnGUI () {
//barra vacia (posicionx,posiciony, ancho, alto)
GUI.DrawTexture (Rect(ScreenX*0.1,ScreenY*0.1,400,140), progressBarEmpty);
//barra llena
GUI.DrawTexture (Rect(ScreenX*0.55,ScreenY*0.65,progress,20), progressBarFull);
}

function Update (){
AnchoxPantalla=Screen.width;
AltoxPantalla=Screen.height;
ScreenX = (Screen.width)/5;
ScreenY=(Screen.height)/5;
progress = PlayerStat.vida; //llamo a la variable vida que se encuentra en el script PlayerStat
}
------------------------------------------------


La función OnGUI dibujará en la pantalla la barra de vida y el fondo. Como se ha comentado el GUIDrawTexture mostrará la textura almacenada en progressBarEmpty, y en otra línea se mostrará progressBarFull, la barra que se irá debilitando apenas el player reciba daño.


La variable progress almacenará el valor total de las vidas, osea que al principio esta tiene 250 vidas, pero por cada daño esta va a bajar 50pts. Si revisamos el GUIDraw de la progressBarFull, nos damos cuenta que en el ancho no tenemos un valor fijo, sino que el ancho va a estar guiado por los puntos de la vida.

Hasta este momento solo hemos mostrado las barras de vida pero no poseen interacción con el player. Para lo cual crearemos el segundo script llamado "PlayerStat" en este script creamos la variable vida que almacenará el total de la vida del player. Aquí realizamos el cálculo del daño, donde la funcion Update valida al momento que vida sea 0 se active la funcion dead (cambio de nivel), y para resetear la variable vida luego le asignamos los 250pts. Este Script se lo ponen al player.

*JS
------------------------------------------------
static var vida = 250;

function Update (){
if(vida <= 0){
Dead();
}
}

function Dead(){
Application.LoadLevel("enemigo 2");
vida = 250;
}
------------------------------------------------

El último script a realizar lo llamaremos "baja_vidas" Este script lo tiene el enemigo, y en este le indicamos cuanto es el daño que va a ocasionar. En mi caso he simplificado el ejemplo usando el OnTriggerEnter a un cubo.
En este script lo único que se realiza es cuando entra a la zona sensible la variable vida es restada por 50pts.

*JS
------------------------------------------------
function OnTriggerEnter () {
PlayerStat.vida = PlayerStat.vida -50;
}
------------------------------------------------


Y con esto hemos elaborado nuestra barra de vida. Debemos de tener claro que cuando llegue "vidas"a cero se cambiará de escena. La misma mecánica se puede usar para restar vidas al enemigo u otros elementos.

Si tienes alguna duda o consulta no dudes en comentar.

martes, 22 de julio de 2014

#Script para pausar el juego en #unity3d - Pause a game

El siguiente Script es de uso frecuente en los juegos, puesto que con este podemos pausarlo y luego continuar jugando. En el script a continuación se indica como mostrar la textura al momento de la pausa.


En el Script se permite al usuario pausar el juego al presionar la tecla "P". Es necesario indicar que al momento de parar el tiempo, el player también dejará de moverse. Se puede reemplazar por cualquier tecla donde indica "KeyCode.(letra)" pero es necesario al momento de escribir la letra que esté en mayúscula. En el caso de no usar por medio de una letra, puede cambiar la sentencia por otra condición.

*JS
----------------------------------------------
function Update () {
    if (Input.GetKeyDown (KeyCode.P)) {
         Time.timeScale = 1.0-Time.timeScale;
         Time.fixedDeltaTime = 0.02 * Time.timeScale;
    }
}
----------------------------------------------
El timeScale se usa para efectos de movimiento lento. Cuando el timeScale es 1.0 el tiempo pasa más rápido que en el tiempo real. Cuando es 0.5 el tiempo pasa 2 veces más lento que el tiempo real. Si es de 0 el juego se detiene si todas sus funciones trabajan con velocidad de fotogramas independientes.

Si deseas aumentarle al código la opción de mostrar un mensaje al momento de la pausa, deberíamos de adicionar una variable de Boolean (verdadero y falso) y la función OnGUI para mostrar la textura o texto.

La variable textura es de tipo Texture2D para almacenar la textura a mostrar. Si observan en el siguiente script en la función update se aumentó una línea que valida si muestra es verdadero o falso. Dependiendo de ese valor de "muestra" se activará la función OnGUI, la cual crear un cuadro con los valores de (230,130,400,400) estos valores corresponden a (x, y, ancho y alto) y la "," seguida de la variable indica que se muestra la textura. Si se desea mostrar un texto en vez de una textura se debe de modificar el GUI.Label y al final poner el texto seguido de comillas.

*JS
----------------------------------------------
var textura : Texture2D;
var muestra : boolean;

function Update () {
    if (Input.GetKeyDown (KeyCode.P)) {
         Time.timeScale = 1.0-Time.timeScale;
         Time.fixedDeltaTime = 0.02 * Time.timeScale;
         muestra=!muestra;
    }
 
}

function OnGUI(){
if(muestra){
    GUI.Label(Rect(230,130,400,400), textura); // muestra textura
    GUI.Label(Rect(100, 100, 50, 30), "Pausa"); // muestra texto
    }
}
----------------------------------------------

miércoles, 16 de julio de 2014

#Script #Unity uso de video como textura

Para usar la opción de video se debe de contar con la versión Pro de Unity. En Unity los videos son considerados como texturas animadas (tiene lógica), los formatos de videos aceptados son: mov, mpg, mpeg, mp4, avi, asf
En el caso de exportar para IOS este usa solo las extensiones de mov, mp4, mpv y 3gp
En el caso de exportar para Android este acepta las siguientes extensiones: H263 , H264 AVC, MPEG-4 SP, VPS

En el caso de Android el sitio web oficial de Unity (Documentacion/Manual) indica que el videoTexture no son compatible y que en lugar de esa opción se ofrece la reproducción de Streaming de pantalla completa utilizando la opción Handheld.PlayFullScreenMovie.

El uso de videos en unity es un poco complejo, hasta el momento no se puede usar de forma fácil el canal alfa de un video, lo único que se puede hacer es cambiar es el "shader" del video y poner "Particles/Aditive" y de esa forma parece que el video tiene la propiedad del alfa.

Una vez cargado el video en nuestro proyecto debemos de probar que se reproduzca el mismo. Para reproducir el video seleccionamos el archivo y en el "Inspector" se habilita la opción de Play (icono).
Si al dar clic en Play el video se reproduce no existe ningún problema, si el video no se reproduce puede ser por incompatibilidad con la extensión del video.


Luego de tener el video en nuestro proyecto el proceso más sencillo es asignárselo a un cubo o a un plano para que en este elemento se reproduzca. El video no se va a reproducir hasta que no usemos un script. Para lo cual he desarrollado algunos ejemplos en Javascript :  para ejecutar el video, cambiar a otra escena al finalizar el video y el ejemplo tradicional de unity que viene en la documentación.

Con esta línea de código indicamos que se reproduzca el video.

renderer.material.mainTexture.Play();


En el Script que visualizaremos a continuación se ha creado una variable de tipo MovieTexture para almacenar el video a ejecutar. A esa variable de video le hemos indicado que el loop (repetición de animación) se encuentra activo o true. A la variable se la activa la opción Play o en su defecto Stop.

Script JS
----------------------------------------------
var movTexture : MovieTexture;

function Update(){
movTexture.loop = true;
renderer.material.mainTexture = movTexture; // Se indica que la textura se asigna a esa variable
movTexture.Play();
}
----------------------------------------------
Se puede realizar una pequeña variación en el Script superior para validar cuando el video se termine de reproducir cambie de escena. Para lo cual usaremos las funciones Start y Update. En la funcion Start indicaremos que se ejecute el video, y en la funcion Update consultaremos si el video no se está reproduciendo cambie de escena. Como se observa en el Script ya no se usa la opción del loop del video.

Script 2 JS
----------------------------------------------
var movTexture : MovieTexture;

function Start(){
  renderer.material.mainTexture = movTexture;
  movTexture.Play();
}

function Update(){
if (!movTexture.isPlaying)Application.LoadLevel("NombreNivel"); //el signo "!" se lee Sino
}
----------------------------------------------

Este es el Script tradicional que encontramos en la página de Documentación de Unity, en el cual por medio de la barra de espacio o tecla "Jump" procedemos a poner Play al video, en el caso de ser presionada de nuevo el botón "Jump" el video se pondrá en pausa. A este mismo script le podemos hacer una variación y cambiar el Update por OnTriggerEnter u OnTriggerExit y aplicarlo a zonas sensibles.

Script 3 JS 
-------------------------------------------
function Update () {
    if (Input.GetButtonDown ("Jump")) {
       if (renderer.material.mainTexture.isPlaying) {
            renderer.material.mainTexture.Pause();
        }
        else {
            renderer.material.mainTexture.Play();
        }
    }
 
}
-------------------------------------------

miércoles, 18 de junio de 2014

#Script activar y desactivar diferentes camaras #Unity

Para poder activar y desactivar cámaras en Unity se puede realizar de forma simple con el siguiente Script en el cual asignamos las diferentes cámaras a usar y por medio de una tecla procedemos a cambiarla.
Este tipo de efecto se visualiza con mayor frecuencia en los juegos de carros en los cuales podemos cambiar a diferentes vistas como frontal, lateral, superior o posterior.



Script JS
--------------------------------------------------------------------------------------
var cam1 : Camera;
var cam2 : Camera;

function Start() {
//activo y desactivo las camaras necesarias
    cam1.enabled = true;
    cam2.enabled = false;
}

function Update() {

    if (Input.GetKeyDown(KeyCode.C)) {
    //al presionar la tecla c se activa la camara desactivada y se desactiva la otra camara
        cam1.enabled = !cam1.enabled;
        cam2.enabled = !cam2.enabled;
    }

}
--------------------------------------------------------------------------------------

También se pueden activar las cámaras de la siguiente forma

--------------------------------------------------------------------------------------
function Update () {
   if (Input.GetKeyDown ("2")){
      camera1.camera.enabled = false;
      camera3.camera.enabled = false;
      camera2.camera.enabled = true;
   }
   if (Input.GetKeyDown ("1")){
      camera1.camera.enabled = true;
      camera2.camera.enabled = false;
      camera3.camera.enabled = false;
   }  
   if (Input.GetKeyDown ("3")){
   camera3.camera.enabled = true;
   camera2.camera.enabled = false;
   camera1.camera.enabled = false;
    }
}
--------------------------------------------------------------------------------------

miércoles, 11 de junio de 2014

Unity: inconveniente con "the animation clip used by the animation component must be marked as legacy" y script para animación

Para el uso tradicional de animaciones en Unity nos encontramos con el siguiente mensaje de error: "the animation clip used by the animation component must be marked as legacy" esto indica que el método del script está llamando a una animación la cual no es "legacy" sino que se encuentra como "mecanim".




Este inconveniente se da desde las versiones superiores a 4.3 en Unity.

En mi caso he querido hacer que al ingresar a la zona sensible de un cubo, este tenga una ligera animación.

El script usado es el siguiente en JS
------------------------------------------------------------------------
var  objeto: GameObject; //Objeto que se desea animar
var animacion : String; //animación a efectuar

function OnTriggerEnter(){
objeto.animation.Play(animacion);
}
------------------------------------------------------------------------

Este script lo debe de usar la zona sensible a la cual el player ingresará, y las dos variables deben de ser llenadas con el objeto que se desea animar. El objeto que se desea animar debe de tener la propiedad de BoxCollider (o cualquier otro tipo de collider) el mismo que debe de tener activo la opción Is Trigger, y además debe de tener un componente de "Animation" con la animación que se desea ejecutar.


Ahora vamos a revisar el mensaje de error que nos sale al momento de ejecutar y nos indica que la animación no es "Legacy". 


Al visualizar este mensaje debemos de seleccionar la animación, ir al menu de la parte superior del Inspector, dar clic y seleccionar Debug.


Luego cambiar en el tipo de animación de 2 (mecanim) que viene por defecto desde la versión 4.3 en adelante a 1 (legacy).

Y con ese cambio solucionado el inconveniente. Ya no sale el mensaje de error, y se efectúa la animación al entrar a la zona sensible.

Información adicional: El sistema de animación Legacy es un sistema previo al Mecanim, y es compatible con versiones anteriores de unity y por lo tanto todavía está disponible. Este sistema también es conocido como de acciones heredadas.
El sistema Mecanim es más actualizado y dispone de fácil flujo de trabajo y configuración de las animaciones de personas humanoides (en este caso no aplicaba), tiene también la posibilidad de aplicar animaciones de un modelo de personaje a otro, vista previa de las animaciones.

En lo personal he trabajado con Mecanim para animación de personajes, y con Legacy para animación de objetos en el juego como bloques, esferas y cualquier otra cosa que no son personajes.

miércoles, 4 de diciembre de 2013

Script Unity - Encender o apagar lámpara

A continuación adjunto script JS para encender o apagar una luz en Unity 3D, pero antes de revisar el código se debe de considerar lo siguiente:


  1. Inserte el objeto a iluminar
  2. Inserte una luz
  3. Deshabilite el check de la luz
  4. Inserte un collider a la luz (para que funcione la opción de dar clic)
  5.  Inserte el código JS




Script Unity 3D - JS
_________________________________________________________________________________

function OnMouseDown()
{
if(Input.GetMouseButton(0))
{
light.enabled = !light.enabled;
}
}

domingo, 1 de diciembre de 2013

Script Unity - " Destuye objeto en tiempo x " y " movimiento y rotación "

A continuación adjunto dos scripts que puede ayudar a muchos en momentos de urgencia.

Estos scripts hace referencia a la acción de: Destruir un objeto que se muestra en escena luego de cierto tiempo, y el otro script hace referencia a mover un objeto cada vez que se haga update en el juego.

Script Destruye object 

---------------------------------------------------------------------------------

public var waitTime : float = 10; // tiempo a transcurrir previo a la destruir

function Start () {
Destroy(gameObject, waitTime);
}

Script Rotación y Traslación

---------------------------------------------------------------------------------


var speed =20; //velocidad de movimiento

function Update () {
transform.Rotate(speed*Time.deltaTime, 0, 0); //x, y, z Rotación
transform.Translate (speed*Time.deltaTime, 0, 0); //x , y, z Traslación
}

jueves, 28 de noviembre de 2013

Script Unity - Sigue objeto o player

A continuación adjunto el script que puede ayudar a muchos en momentos de urgencia.

Este script hace referencia a la acción de seguir a un objeto, parecido a este efecto que tenía el juego de Mario Bros con los fantasmas, que al ingresar a una zona sensible el fantasma seguía al personaje.




El script está desarrollado en JS
_________________________________________________________________________________
var target : Transform; //el Objetivo
var moveSpeed = 3; //velocidad de movimiento
var rotationSpeed = 3; //Velocidad de rotación
var myTransform : Transform;
var velocidadDeAnimacion = moveSpeed*0.3;//Solo si tu objeto esta animado

function Awake() {
    myTransform = transform;
}

function Start() {
    //Si deseas que siga a otro objeto que no sea el solo comenta esta linea de abajo...
     target = GameObject.FindWithTag("Player").transform; //target the player
}

function Update () {
     //Controlar la animacion en funcion de la velocidad a la que se mueva, si no esta animado tu objeto puedes dejar comentadas estas 3 lineas.
   
    /*for (var state : AnimationState in animation) {    
          state.speed = velocidadDeAnimacion;
    }*/

    //valida si la distancia
   
   if (Vector3.Distance (target.position, transform.position)<5){
        myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);

    //Movimiento en dirección del target
    myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
    }
}