Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: samus en Agosto 09, 2017, 11:38:25 PM

Título: Duda con camara en unity
Publicado por: samus en Agosto 09, 2017, 11:38:25 PM
hola estoy intentando hacer una vista en primera persona como la de metroid prime pero tengo problemas de rotacion , ya proble con mathf.clamp() , pero nada alguna subjerncia de como pueda arreglarla?
 
 
 

using UnityEngine;
using System.Collections;
public class CamaraSamus : MonoBehaviour {
public float velocidad = 10f;
public float margen = 5f;
 
// Use this for initialization
void Start () {
   
}

// Update is called once per frame
void Update ()
{
   
   if (Input.mousePosition.y >= Screen.height - margen)
   {
      transform.Rotate(-Vector3.right * velocidad * Time.deltaTime , Space.Self );
   }
   
   if (Input.mousePosition.y <= margen)
   {
      transform.Rotate(Vector3.right * velocidad * Time.deltaTime , Space.Self );
   }
   
   if (Input.mousePosition.x >= Screen.width - margen)
   {
      transform.Rotate(Vector3.up * velocidad * Time.deltaTime , Space.Self );
   }
   
   if (Input.mousePosition.x <= margen)
   {
      transform.Rotate(-Vector3.up * velocidad * Time.deltaTime , Space.Self );
   }
 
}
}

 
 
Título: Duda con camara en unity
Publicado por: lightbug en Agosto 10, 2017, 12:27:09 AM
"problemas de rotacion"?, la sugerencia seria que uses mas de diez palabras mas para describir tu problema, nadie de entrada se va a poner a leer codigo ajeno si no sabe que tiene que buscar, podria ser cualquier cosa.
Título: Duda con camara en unity
Publicado por: samus en Agosto 10, 2017, 01:32:11 AM
voy a ver si lo puedo explicar mejor hay alguna forma de que mi script pueda rotar como mouse look sin que este al ver objetos de escenas quede en diagonal? por que lo que sucede es que al no se como limitar la camara en los ejes vertical y horizontal por que no quiero hacer un mouse look "normal"
adjunto demo de la camara por si quedan dudas 
test camara.rar
Título: Duda con camara en unity
Publicado por: lightbug en Agosto 10, 2017, 02:23:03 AM
no se  si te entendi bien con lo que el script pueda rotar como mouselook. si queres que no gire en diagonal trabaja mas los ifs vos sabes que si se llega a dar el giro horizontal no se puede dar el otro, usa else, podes usas enums, flags(bool) o una funcion para salir de un giro o de otro.
 

void Girar(){
  if (Input.mousePosition.y >= Screen.height - margen){
      transform.Rotate(-Vector3.right * velocidad * Time.deltaTime , Space.Self );
      return;   //si de dio el giro sale de la funcion evitando el otro giro
  }else if (Input.mousePosition.y <= margen){
      transform.Rotate(Vector3.right * velocidad * Time.deltaTime , Space.Self );
      return;   //si de dio el giro sale de la funcion evitando el otro giro
  }
  //aca no se dio el giro vertical
  if (Input.mousePosition.x >= Screen.width - margen){
    transform.Rotate(Vector3.up * velocidad * Time.deltaTime , Space.Self );
  }else if (Input.mousePosition.x <= margen){
      transform.Rotate(-Vector3.up * velocidad * Time.deltaTime , Space.Self );
  }
}
void Update()
{
Girar();
}

 
o podrias dentro del update con una flag
 

void Update(){
bool sedioGiro = false;
   
  if (Input.mousePosition.y >= Screen.height - margen){
      transform.Rotate(-Vector3.right * velocidad * Time.deltaTime , Space.Self );
      sedioGiro = true;   //si de dio el giro sale de la funcion evitando el otro giro
  }else if (Input.mousePosition.y <= margen){
      transform.Rotate(Vector3.right * velocidad * Time.deltaTime , Space.Self );
      sedioGiro = true;   //si de dio el giro sale de la funcion evitando el otro giro
  }
  if(!sedioGiro){
    if (Input.mousePosition.x >= Screen.width - margen){
      transform.Rotate(Vector3.up * velocidad * Time.deltaTime , Space.Self );
    }else if (Input.mousePosition.x <= margen){
        transform.Rotate(-Vector3.up * velocidad * Time.deltaTime , Space.Self );
    }
  }
}