Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

323
Vistas
Sacudidas de cámara en movimiento en Unity

Estoy trabajando en una carrera cuesta abajo y quiero que la cámara se mueva en varios grados para transmitir que el jugador es cada vez más rápido. En este momento tengo un GameObject llamado "CameraHolder" que es el padre de la cámara principal.

Tengo un guión adjunto al Holder que sigue al jugador, y otro guión adjunto a la cámara que está destinado a sacudirla dentro de ese titular.

Guión de seguimiento de CameraHolder

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFollow : MonoBehaviour { public Camera cam; public Transform player; public Vector3 offset; public float speed = 2f; public Rigidbody rb; public float startingFieldOfView = 60f; void FixedUpdate() { float interpolation = speed * Time.deltaTime; Vector3 cameraPosition = new Vector3(Mathf.Lerp(transform.position.x, player.position.x, interpolation), player.position.y + player.localScale.y + offset.y, player.position.z + -player.localScale.z + offset.z); // Change of camera FOV depending on the speed of the rigidbody transform.position = cameraPosition; cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, startingFieldOfView + (rb.velocity.magnitude / 3), .1f);

CameraShake Script adjunto a la cámara principal secundaria

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraShake : MonoBehaviour { public Rigidbody player; public float shakeThreshold; public float shakeMagnitude; private void Update() { float x = Random.Range(-shakeMagnitude, shakeMagnitude); float y = Random.Range(-shakeMagnitude, shakeMagnitude); if (player.velocity.magnitude >= shakeThreshold) { transform.localPosition = new Vector3(x, y, transform.position.z); } } }

Creo que tal vez entiendo mal cómo funciona localPosition. Pensé que movería la cámara una cantidad aleatoria mientras se movía dentro del soporte, pero no hace nada. ¿Estoy aplicando esto mal o la lógica no funciona?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que usar cinemachine realmente te ayudará.

Para reemplazar su secuencia de comandos CameraFollow, puede usar una cámara virtual con la propiedad Seguir. Para obtener más información, puede ir allí: https://docs.unity3d.com/Packages/com.unity.cinemachine@2.6/manual/CinemachineSetUpVCam.html

Para reemplazar el movimiento de su cámara, puede verificar la propiedad de ruido allí: https://docs.unity3d.com/Packages/com.unity.cinemachine@2.6/manual/CinemachineVirtualCameraNoise.html

Para obtener más información sobre cinemachine, consulte el documento aquí: https://docs.unity3d.com/Packages/com.unity.cinemachine@2.6/manual/CinemachineUsing.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda