Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
gele81

Movimiento cámara fluido con ratón

Recommended Posts

Buenos dias

intentando hacer, con poco éxito un script que cuando tu arrastres el ratón en una superficie 2D por la pantalla se mueva la cámara según la fuerza que utilices en el impulso y pare poco a poco, similar a los juegos de android. El caso es que no doy pie con bola.

No me sale nada limpio y suave. Todo es al mogollón y movimientos muy duros.

Lo estoy intentando con un raycast, por que se que el touch no vale para PC.

Un saludo y gracias.

Share this post


Link to post
Share on other sites

Hola, si necesitas el impulso del mouse podes usar los axis Mouse X y MouseY, te devuelven float segun cuando lo desplazaste respecto el cuadro anterior, por ej si lo moviste despacio --> 0.05f , si lo moviste mas rapido --> 0.5f (no se si son valores reales pero para tener una idea).

La clave es NO manejar directamente la velocidad con lo anterior, sino en un cuadro tenes velocidad pero en el que sigue se puso a cero, la clave con lo anterior es determinar el punto a donde iria a parar la camara luego del desplazamiento para luego hacer un Lerp de posicion y llevarla suavemente a ese lugar.

Algo mas o menos:

//En la camara

public float speed = 1;		//<--- valores para probar
Vector3 targetPos;	//<--- pos a la que hara el Lerp                                   
float lerpValue = 0.5f;		//<--- valores para probar

void OnEnable()
{
	targetPos = transform.position;
}

void Update()
{
	targetPos.position += speed * ( Vector2.right * Input.GetAxis("Mouse X") + Vector2.up * Input.GetAxis("Mouse Y") );
}

//siempre los movimientos estos de camara conviene hacerlos ultimos en los Update's
void LateUpdate()
{
	transform.position = Vector3.Lerp(transform.position , targetPos.position , lerpValue);
}

Probalo en la camara a ver si funca, lo hice aca asi que puede haber errores

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...