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?
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