Estoy trabajando en un pequeño proyecto experimental en Unity y quiero centrarme en un enemigo. Mi cámara se comporta de manera similar a la cámara de Dark Souls, usando la cámara Cinemachine Free Look. Ahora quiero poder hacer clic en un botón y fijarme en el enemigo, de forma similar a cómo funciona la cámara de Dark Souls, que se muestra en este video . También hice una imagen para explicar lo que estoy buscando. Quiero que tanto el jugador como el enemigo estén en el centro vertical de la pantalla mientras están bloqueados, pero quiero que la cámara siga al jugador, básicamente mientras gira alrededor del enemigo.
He intentado agregar tanto al jugador como al enemigo en un grupo objetivo, pero no se comporta como yo quiero. Claro, mira tanto al jugador como al enemigo, pero no los mantiene alineados como he tratado de mostrar en la imagen y el video.
Para mí, en el video, parece que la cámara está colocada alrededor de un punto de pivote (verde) que está fijo en el reproductor. Luego, la cámara apunta a la posición media exacta (punto naranja) entre el jugador y el enemigo seleccionado. También parece que hay un ángulo máximo cuando el enemigo salta.
Una prueba rápida de concepto con el código que hice. Sin embargo, el código es realmente solo una prueba de concepto:
public class CameraScript : MonoBehaviour { public Transform enemy; public Transform player; public float cameraSlack; public float cameraDistance; private Vector3 pivotPoint; void Start() { pivotPoint = transform.position; } void Update() { Vector3 current = pivotPoint; Vector3 target = player.transform.position + Vector3.up; pivotPoint = Vector3.MoveTowards(current, target, Vector3.Distance(current, target) * cameraSlack); transform.position = pivotPoint; transform.LookAt((enemy.position + player.position) / 2); transform.position -= transform.forward * cameraDistance; } }