Resumen Scripts Copia

TÉCNICA 2
Explicación en You Tube 1 LA CÁMARA SIGUE A UN OBJETO
Explicación en You Tube 2 LA CÁMARA SIGUE A UN OBJETO A UNA DETERMINADA
                                            DISTANCIA

La cámara mira a un objeto


function Start () {

}
var objeto : Transform;
function Update () {
transform.LookAt(objeto);

}

  

Mover un objeto

Ejemplo 1 a


function Update () {
transform.Translate(10,0,0);

}

Ejemplo 2

var velocidad:float;
function Update () {
transform.Translate(velocidad*Time.deltaTime,0,0);

}

Ejemplo 3

function Update () {
transform.Translate(1*Time.deltaTime,0,0);

}


  

Rotar un objeto


Ejemplo1


function Update () {
transform.Rotate(1,6,4);
}

Ejemplo 2


function Update () {
transform.Rotate(0,0,10);
}


ROTAR UN OBJETO HASTA UN ÁNGULO ABSOLUTO

if (movimiento == 1)
   transform.eulerAngles = Vector3(4002611);


CONTROL DE LOS CURSORES


if (Input.GetKey("down") )
   transform.Translate(0,-1,0);
  
  
   if (Input.GetKey("up") )
   transform.Translate(0,1,0);
  
   if (Input.GetKey("right"))
   transform.Translate(1,0,0);
  
   if (Input.GetKey("left"))
   transform.Translate(-1,0,0);

 

CONTROL DE TECLAS


if (Input.GetKey("z") )
   transform.Translate(0,-1,0);
  
  
   if (Input.GetKey("w") )
   transform.Translate(0,1,0);
  
   if (Input.GetKey("a"))
   transform.Translate(1,0,0);
  
   if (Input.GetKey("s"))
   transform.Translate(-1,0,0);

 

CONTROL DEL RATÓN



if (Input.GetMouseButton(0))
   transform.Translate(10,0,0);


Returns whether the given mouse button is held down.

button values are 0 for left button, 1 for right button, 2 for the middle button.

JavaScript
// Detects clicks from the mouse and prints a message
// depending on the click detected.

function Update() {
    if(Input.GetMouseButton(0))
        Debug.Log("Pressed left click.");
    if(Input.GetMouseButton(1))
        Debug.Log("Pressed right click.");
    if(Input.GetMouseButton(2))
        Debug.Log("Pressed middle click.");
}

 Control de cursores



Ejemplo 1


function Update () {
var traslacion:float;
traslacion =Input.GetAxis("Vertical");
var rotacion:float;
rotacion= Input.GetAxis("Horizontal");
transform.Translate(0,0,traslacion);
transform.Rotate(0,rotacion,0);

}


Ejemplo 2


function Update () {
var traslacion:float = Input.GetAxis("Vertical");

// Atención es muy importante que configuremos correctamente el Input manager para que Input.GetAxis("Vertical") o Input.GetAxis("Horizontal") respondan según lo esperado.
Debemos ir a edit, project settings y escoger Input. Luego escoger , por ejemplo, Vertical y asegurarnos que está MouseMovement o Key or Mouse Button o Joystick Axis, según nos convenga.
también nos hemos de asegurar de que la opción Axis de vertical tenga asignada YAxis o lo que corresponda.

var rotacion:float = Input.GetAxis("Horizontal");
transform.Translate(0,0,traslacion);
transform.Rotate(0,rotacion,0);

}

 Ejemplo 3


function Update () {

function Update () {
var traslacion:float;
traslacion =Input.GetAxis("Vertical");
var rotacion:float;
traslacion *=Time.deltaTime;
rotacion *=Time.deltaTime;
rotacion= Input.GetAxis("Horizontal");
transform.Translate(0,0,traslacion);
transform.Rotate(0,rotacion,0);

}
}

Ejemplo 3A
var speed : float = 1;
var rotationSpeed : float = 1;


function Update () {
//Get the horizontal and vertical axis.
// By default they are mapped to the arrow keys.
// The value is in the range -1 to 1
//var translation : float = Input.GetAxis ("Vertical") * speed;
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;

// Make it move 10 meters per second instead of 10 meters per frame...

//translation *= Time.deltaTime;
rotation *= Time.deltaTime;

// Move translation along the object's z-axis
transform.Rotate (0, 0, rotation);
// Rotate around our y-axis
transform.Rotate (0, 0, 0);
if(Input.GetKey("up"))
transform.Translate(0,-1,0);
if(Input.GetKey("down"))
transform.Translate(0,1,-0);
if(Input.GetKey("right"))
transform.Translate(1,0,0);
if(Input.GetKey("left"))
transform.Translate(-1,0,-0);



}

Ejemplo 4


var speed : float = 10.0;
var rotationSpeed : float = 100.0;

function Update () {
    // Get the horizontal and vertical axis.
    // By default they are mapped to the arrow keys.
    // The value is in the range -1 to 1
    var translation : float = Input.GetAxis ("Vertical") * speed;
    var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;
   
    // Make it move 10 meters per second instead of 10 meters per frame...
    translation *= Time.deltaTime;
    rotation *= Time.deltaTime;
   
    // Move translation along the object's z-axis
    transform.Translate (0, 0, -translation);
    // Rotate around our y-axis
    transform.Rotate (0, rotation, 0);
}





COLISIÓN


function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Suelo")
    {
        Destroy (gameObject);
        Debug.Log ("Toca el suelo");
     }
    
     //Al terreno le habremos asignado el tag Suelo     
}     



PERSECUCIÓN A UN OBJETO 2




function MoveTowards (current : Vector3, target : Vector3, maxDistanceDelta : float) : Vector3

Description

Moves a point current in a straight line towards a target point.
The value returned by this function is a point maxDistanceDelta units closer to a target point along a line between current andtarget. If the target is closer than maxDistanceDelta then the returned value will be equal to target (ie, the movement will not overshoot the target). Negative values of maxDistanceDelta can be used to push the point away from the target.
JavaScript


VERSIÓN 1



var objeto:Transform;

var speed:float;
var distancia:float;

function Start () {
//transform.position.x = 951.46;
//transform.position.y = 1.34;
//transform.position.z = 382.14;
}

function Update () {
 // The step size is equal to speed times frame time.
        var step = speed * Time.deltaTime;
        var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
        
        Debug.Log ("Distancia: "+dist);
        if (dist <  distancia)
        {
        // Move our position a step closer to the target.
        transform.position = Vector3.MoveTowards(transform.position, objeto.position, step);
        
        }
}

VERSIÓN 2


    // The target marker.
    var target: Transform;
    
    // Speed in units per sec.
    var speed: float;
    
    
    function Update () {
        // The step size is equal to speed times frame time.
        var step = speed * Time.deltaTime;
        
        // Move our position a step closer to the target.
        transform.position = Vector3.MoveTowards(transform.position, target.position, step);
    }



var objeto:Transform;
var sigue:int;
var speed:float;
function Start () {
//transform.position.x = 951.46;
//transform.position.y = 1.34;
//transform.position.z = 382.14;
}

function Update () {
 // The step size is equal to speed times frame time.
        var step = speed * Time.deltaTime;
        if (sigue ==1)
        {
        // Move our position a step closer to the target.
        transform.position = Vector3.MoveTowards(transform.position, objeto.position, step);
        }
}



function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Persona")
    {
     
        Debug.Log ("Persona detectada");
        //transform.LookAt(objeto);
        //transform.Translate(1,0,0);
        // The target marker.
        sigue = 1;
 
     
 
 
 
 
     }  
}  


function OnTriggerExit (other : Collider) {

    Debug.Log ("Ya no te toco");
    sigue = 0;
}


CONTROL DE ANIMACIONES DE MECANIM




var animator:Animator;

var velocidad:float = 0;
function Start () {
animator = GetComponent("Animator");
}

function Update () {
velocidad=animator.GetFloat("velocidad");
if(Input.GetKey("up"))
velocidad = 0.2;
if(Input.GetKey("down"))
velocidad = 0;
if(Input.GetKey("space"))
velocidad = 0.7;
animator.SetFloat("velocidad",velocidad);
}


CREACIÓN  DE UNA EXPLOSIÓN


var explosion : Transform ;
function Start () {

}

function Update () {
 if (Input.GetKey("space"))
   Instantiate(explosion, transform.position, transform.rotation);

}

PATRULLANDO

#pragma strict
var distancia : float; 
var objeto:Transform; 
//var objeto : Transform;
var punt1 : Transform;
var punt2 : Transform;
var punt3 : Transform;
var velocidadpatrulla : float;
var veA : int = 1;
var steppatrulla : float;
static var disparar= 0;
static var patrullando : int ;
static var persiguiendo : int;

function Start () {
steppatrulla = velocidadpatrulla * Time.deltaTime;
}

function Update () {
var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
if (dist > distancia)
{
    patrullando = 1;
    disparar = 0;
    persiguiendo = 0;
}
else
{
    patrullando = 0;
    disparar = 1;
    persiguiendo = 1;
}
if (patrullando == 1)
if ( veA == 1 )
{
transform.LookAt(punt1.position);
transform.position = Vector3.MoveTowards(transform.position, punt1.position, steppatrulla);
        
}
if (veA == 2)
{
    transform.LookAt(punt2.position);
    transform.position = Vector3.MoveTowards(transform.position, punt2.position, steppatrulla);

Debug.Log("Estoy en 2");
}
if (veA == 3) 
{
transform.LookAt(punt3.position);
transform.position = Vector3.MoveTowards(transform.position, punt3.position, steppatrulla);

}
}

}

function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Waypoint1")
    {
        veA =2;
        Debug.Log("Estoy en 1");
    }
    if(otro.tag =="Waypoint2")
    {
        veA =3;
        Debug.Log("Estoy en 2");
    }
    if(otro.tag =="Waypoint3")
    {
        veA =1;
        Debug.Log("Estoy en 3");
    }
    
     
}
      
Principio del formulario
#pragma strict
var distancia : float; 
var objeto:Transform; 
//var objeto : Transform;
var punt1 : Transform;

var punt2 : Transform;

var punt3 : Transform;
var velocidadpatrulla : float;
var veA : int = 1;
var steppatrulla : float;
static var disparar= 0;
static var patrullando : int ;
static var persiguiendo : int;

function Start () {
steppatrulla = velocidadpatrulla * Time.deltaTime;
}

function Update () {
var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
if (dist > distancia)
{
    patrullando = 1;
    disparar = 0;
    persiguiendo = 0;
}
else
{
    patrullando = 0;
    disparar = 1;
    persiguiendo = 1;
}
if (patrullando == 1)


                                       if ( veA == 1 )

                                       {

                                                                               transform.LookAt(punt1.position);

                                                                               transform.position = Vector3.MoveTowards(transform.position, punt1.position, steppatrulla);

                                               

                                       }

                                       if (veA == 2)

                                       {

                                                                              transform.LookAt(punt2.position);

                                                                              transform.position = Vector3.MoveTowards(transform.position, punt2.position, steppatrulla);



                                       Debug.Log("Estoy en 2");

                                       }

                                       if (veA == 3) 

                                       {

                                                                               transform.LookAt(punt3.position);

                                                                               transform.position = Vector3.MoveTowards(transform.position, punt3.position, steppatrulla);



                                       }

}



}



function OnTriggerEnter(otro: Collider)



{

    if(otro.tag =="Waypoint1")

    {

        veA =2;

        Debug.Log("Estoy en 1");

    }

    if(otro.tag =="Waypoint2")

    {

        veA =3;

       

    }

    if(otro.tag =="Waypoint3")

    {

        veA =1;

       

    }

    

     

}
. 
       
 Esta rutina de patrulla parte de una idea encontrada en el foro de Unity.
Suponemos que hemos definido tres puntos, pueden ser cuadrados que hagamos invisibles o Empty game objects,que deben tener colliders y activado su trigger.
A cada uno de los puntos o cuadrados le hemos asignado un tag : Waypoint1, Waypoint 2, para poder detectar la colisión con ellos.


DISPARO 

var projectile : Rigidbody;

               function Update () {
                              // Ctrl was pressed, launch a projectile
                              if (Input.GetButtonDown("Fire1")) {
                                            // Instantiate the projectile at the position and rotation of this transform
                                            var clone : Rigidbody;
                                            clone = Instantiate(projectile, transform.position, transform.rotation);
                                           
                                            // Give the cloned object an initial velocity along the current
                                            // object's Z axis
                                            clone.velocity = transform.TransformDirection (Vector3.forward * 10);
                                            Destroy(clone.gameObject, 2);
                              }
               }

Este script lo hemos obtenido de la excelente referencia de Unity en la sección instantiate.
El script del disparo es asignado a un objeto disparador desde el que partirá la bala al pulsar el botón fire1, normalmente si la definición es la que adopta Unity por defecto el ctrl.
El disparador estará asociado al personaje o al arma del disparo y debe carecer de colliders para que la bala no interactúe con él y produzca efectos indeseables.
Previamente habremos creado la bala. Esta bala será un prefab.  Es imprescindible que al prefab de la bala le hayamos añadido el componente Rigidbody, porque así definimos a la variable y porque es una exigencia de instantiate.

Instantiate nos clonará el proyectil referenciado en la posición  transform.position y en la rotación  transform.rotation.
Es importante tener en cuenta que  transform.position y tranform.rotation responden a la posición y rotación del objeto al que le hemos asignado el script, que será siempre el disparador.

Después le asignaremos una velocidad al objeto creado:

clone.velocity = transform.TransformDirection (Vector3.forward * 10);

Y finalmente es importante incorporar la dstrucción de la bala, que puede ser automática a partir de un tiempo definido o al colisionar con los diferentes blancos:

 Destroy(clone.gameObject, 2);

 

 

DISPARO DIRECTO

. var distancia : float;
var velBala                            :float;
var origenDisparo   :Transform;
var obdisparo1                      :Transform;
static var vida:int ;
static var disparar= 0;
static var veaInicioBala:int = 1;
function Start()
{
vida = 100;
}
function Update ()
{
               var step = velBala * Time.deltaTime;
               .

               if ( veaInicioBala ==1 && disparar == 1)
               {
     
                              transform.position = origenDisparo.position;
                              veaInicioBala = 0;
               }
              
              
               if  ( disparar ==1 )
                              transform.position = Vector3.MoveTowards(transform.position, obdisparo1.position, step);
                              //Destroy(gameObject,2);
}


function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Player")
    {
        transform.position = origenDisparo.position;
        vida -=10;
        veaInicioBala = 1;
        Debug.Log("Tocado "+vida);
     }
   
     //Al jugador le habremos asignado el tag Player  
}

function OnGUI () {
 
  //GUI.Label (Rect (10, 10, 100, 20),"Vida =" +vida);
  GUI.Box(Rect(10,10,100,20),"Vida ="+vida);
  
}
 

Este script responde a la necesidad de crear un disparo directo y automático hacia un objetivo definido,en nuestro caso por la variable "obdisparo1".
Para fijar el origen del disparo (origenDsiparo) creamos un objeto, que puede ser un empty game object, o cualquier otro objeto al que la hayamos hecho invisible. Este objeto es muy importante que carezca de colisiones, si no es así nuestra bala chocará con él y modificará de inicio su trayectoria de una manera indeseable. La bala o el proyectil tendrá , en contrapartida, collider para poder detectar sus colisones. El objeto al que se apunta deberá tener collider. A este objeto se le habrá asignado un tag en nuestro caso "Player" para poder detectar sus choques.
Aquí también hemos añadido una función onGui para poder controlar otras variables como la vida, por ejemplo.


BARRA DE VIDA, PUNTOS

 

static var vida;

function Start () {

vida = 100;

}

function Update () {

//La variable anirà modificant-se a mesura que el protagonista vagi rebent danys.

}

function OnGUI () {

    //GUI.Label (Rect (10, 10, 100, 20),"Vida =" +vida);

  GUI.Box(Rect(10,10,100,20),"Vida ="+vida);

  

ACCESO A LAS VARIABLES DE OTRO SCRIPT


other.GetComponent(jugador).vida -=1;



Suponemos que disponemos de un script llamado jugador.
En este script hemos declarado una variable llamada vida.
Precisamos acceder a esta variable desde otro script y para ello utilizamos GetComponent y, entre
paréntesis, indicamos el nombre del script sin comillas.
Tras el paréntesis, concatenado con el punto, añadimos el nombre de la variable que precisamos del primer script.


Ejemplo del foro de Unity

  1. var targetObj: Transform; // drag the object with the Clips variable here
  2.  
  3. // get a reference to the target script (ScriptName is the name of your script):
  4. var targetScript: ScriptName = targetObj.GetComponent(ScriptName);
  5. // use the targetScript reference to access the variable Clips:
  6. targetScript.Clips += 10;
  7. print("Clips="+targetScript.Clips);
  8.  
  9. // In C# the syntax would be different:
  10. ...
  11. ScriptName targetScript = targetObj.GetComponent<ScriptName>();


Ejemplo 2
// To access public variables and functions
// in another script attached to the same game object.
// (ScriptName is the name of the javascript file)
var other = gameObject.GetComponent(“ScriptName”);
// Call the function DoSomething on the script
other.DoSomething ();
// set another variable in the the other script instance
other.someVariable = 5;






 

#pragma strict
var distancia : float; 
var objeto:Transform; 
//var objeto : Transform;
var punt1 : Transform;
var punt2 : Transform;
var punt3 : Transform;
var velocidadpatrulla : float;
var veA : int = 1;
var steppatrulla : float;
static var disparar= 0;
static var patrullando : int ;
static var persiguiendo : int;

function Start () {
steppatrulla = velocidadpatrulla * Time.deltaTime;
}

function Update () {
var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
if (dist > distancia)
{
    patrullando = 1;
    disparar = 0;
    persiguiendo = 0;
}
else
{
    patrullando = 0;
    disparar = 1;
    persiguiendo = 1;
}
if (patrullando == 1)
if ( veA == 1 )
{
transform.LookAt(punt1.position);
transform.position = Vector3.MoveTowards(transform.position, punt1.position, steppatrulla);
        
}
if (veA == 2)
{
    transform.LookAt(punt2.position);
    transform.position = Vector3.MoveTowards(transform.position, punt2.position, steppatrulla);

Debug.Log("Estoy en 2");
}
if (veA == 3) 
{
transform.LookAt(punt3.position);
transform.position = Vector3.MoveTowards(transform.position, punt3.position, steppatrulla);

}
}

}

function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Waypoint1")
    {
        veA =2;
        Debug.Log("Estoy en 1");
    }
    if(otro.tag =="Waypoint2")
    {
        veA =3;
        Debug.Log("Estoy en 2");
    }
    if(otro.tag =="Waypoint3")
    {
        veA =1;
        Debug.Log("Estoy en 3");
    }
    
     
}
     
#pragma strict
var distancia : float; 
var objeto:Transform; 
//var objeto : Transform;
var punt1 : Transform;
var punt2 : Transform;
var punt3 : Transform;
var velocidadpatrulla : float;
var veA : int = 1;
var steppatrulla : float;
static var disparar= 0;
static var patrullando : int ;
static var persiguiendo : int;

function Start () {
steppatrulla = velocidadpatrulla * Time.deltaTime;
}

function Update () {
var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
if (dist > distancia)
{
    patrullando = 1;
    disparar = 0;
    persiguiendo = 0;
}
else
{
    patrullando = 0;
    disparar = 1;
    persiguiendo = 1;
}
if (patrullando == 1)
if ( veA == 1 )
{
transform.LookAt(punt1.position);
transform.position = Vector3.MoveTowards(transform.position, punt1.position, steppatrulla);
        
}
if (veA == 2)
{
    transform.LookAt(punt2.position);
    transform.position = Vector3.MoveTowards(transform.position, punt2.position, steppatrulla);

Debug.Log("Estoy en 2");
}
if (veA == 3) 
{
transform.LookAt(punt3.position);
transform.position = Vector3.MoveTowards(transform.position, punt3.position, steppatrulla);

}
}

}

function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Waypoint1")
    {
        veA =2;
        Debug.Log("Estoy en 1");
    }
    if(otro.tag =="Waypoint2")
    {
        veA =3;
        Debug.Log("Estoy en 2");
    }
    if(otro.tag =="Waypoint3")
    {
        veA =1;
        Debug.Log("Estoy en 3");
    }
    
     
}
     
#pragma strict
var distancia : float; 
var objeto:Transform; 
//var objeto : Transform;
var punt1 : Transform;
var punt2 : Transform;
var punt3 : Transform;
var velocidadpatrulla : float;
var veA : int = 1;
var steppatrulla : float;
static var disparar= 0;
static var patrullando : int ;
static var persiguiendo : int;

function Start () {
steppatrulla = velocidadpatrulla * Time.deltaTime;
}

function Update () {
var dist:float;
        //var dist:float;
        dist = Vector3.Distance(objeto.position, transform.position);
if (dist > distancia)
{
    patrullando = 1;
    disparar = 0;
    persiguiendo = 0;
}
else
{
    patrullando = 0;
    disparar = 1;
    persiguiendo = 1;
}
if (patrullando == 1)
if ( veA == 1 )
{
transform.LookAt(punt1.position);
transform.position = Vector3.MoveTowards(transform.position, punt1.position, steppatrulla);
        
}
if (veA == 2)
{
    transform.LookAt(punt2.position);
    transform.position = Vector3.MoveTowards(transform.position, punt2.position, steppatrulla);

Debug.Log("Estoy en 2");
}
if (veA == 3) 
{
transform.LookAt(punt3.position);
transform.position = Vector3.MoveTowards(transform.position, punt3.position, steppatrulla);

}
}

}

function OnTriggerEnter(otro: Collider)

{
    if(otro.tag =="Waypoint1")
    {
        veA =2;
        Debug.Log("Estoy en 1");
    }
    if(otro.tag =="Waypoint2")
    {
        veA =3;
        Debug.Log("Estoy en 2");
    }
    if(otro.tag =="Waypoint3")
    {
        veA =1;
        Debug.Log("Estoy en 3");
    }
    
     
}
      



  

 

No hay comentarios:

Publicar un comentario