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
Ejemplo 3
transform.eulerAngles = Vector3(400, 261, 1);
Ejemplo 1
Ejemplo 2
Ejemplo 4
JavaScript
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;
}
var explosion : Transform ;
function Start () {
}
function Update () {
if (Input.GetKey("space"))
Instantiate(explosion, transform.position, transform.rotation);
}
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
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;
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(400, 261, 1);
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.
// 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 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.
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;
}
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
- var targetObj: Transform; // drag the object with the Clips variable here
- // get a reference to the target script (ScriptName is the name of your script):
- var targetScript: ScriptName = targetObj.GetComponent(ScriptName);
- // use the targetScript reference to access the variable Clips:
- targetScript.Clips += 10;
- print("Clips="+targetScript.Clips);
- // In C# the syntax would be different:
- ...
- 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;
No hay comentarios:
Publicar un comentario