Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Cámara libre

Iniciado por aurelio, Agosto 02, 2015, 07:54:17 PM

Tema anterior - Siguiente tema
Hola a todos y gracias por la ayuda! soy diseñador gráfico y me ha entrado el duende de la programación para videojuegos sin saber demasiado, así que estoy nuevo en esto.estoy haciendo un intento de juego de estrategia jaja  tengo  el siguiente script para la camara:
#pragma strict

function Start () {

}

function Update () {

if(Input.GetMouseButton(2)) {
   
   transform.Rotate(Vector2(Input.GetAxis ("Mouse Y"), Input.GetAxis ("Mouse X")));
}

}
con el pretendo que al mantener pulsado el boton medio del mouse y moviendolo por el pad podamos rotar el angulo de la camara de manera vertical (y) y horizontal (x). todo de maravilla excepto porque a veces tambien rota en el eje z lo cual es poco practico para este tipo de camara.no entiendo muy bien porque sucede esto, si es que se suman los vectores o es que no son independientes entre ellos. no tengo ni idea. por el momento lo que se me ocurre es algun codigo para que los valores de z sean siempre 0 y quede fijo en ese eje pero tampoco se como. alguna idea?

#pragma strict

var velocidad : float = 1.0;

private var temp : Vector3;

private var x : float;
private var y : float;

function Update () {

   x += Input.GetAxis("Mouse X")*velocidad*Time.deltaTime;
   y += Input.GetAxis("Mouse Y")*velocidad*Time.deltaTime;  
   
   temp.Set(Mathf.Sin(x)+transform.position.x,transform.position.y+y,Mathf.Cos(x)+transform.position.z);
   
   transform.LookAt(temp);
   
}
Hola de nuevo! conseguí la solución en otro foro y la comparto por si alguien la necesita. Lo que intuyo que sucedía es que la etiqueta "rotate" del transform es una operación que incluye una función que involucra los datos de (x, y) en el eje z. La solución no la tengo muy clara pero funciona buenísimo jaja 

Etiquetas: