- Home /
Clamp camera to multiple on-screen players
I am trying to get my camera to clamp and zoom in towards a group of players on screen. So if these players are close together the camera will be zoomed in more than if they were further apart. I would like to do this by adjusting the FOV.
Currently, I am getting the centroid of all the players and then rotating the camera toward that point (so it stays focused on the middle), but I still need to accomplish the zooming using FOV adjustments.
I wrote a function that currently gets the minimum and maximum points on the viewport, which I think should then be used to adjust the camera (as well as some sort of buffer/edge so that the players don't directly touch the edge of the screen).
private void UpdateFOV()
{
Vector3 minViewPortPos = camera.WorldToViewportPoint(players[0].position);
Vector3 maxViewportPos = camera.WorldToViewportPoint(players[0].position);
// Find the minimum and maximum viewport points
for (int i = 1; i < players.Length; i++)
{
Vector3 viewportPos = camera.WorldToViewportPoint(players[i].position);
if (viewportPos.x < minViewPortPos.x)
minViewPortPos.x = viewportPos.x;
if (viewportPos.x > maxViewportPos.x)
maxViewportPos.x = viewportPos.x;
if (viewportPos.y < minViewPortPos.y)
minViewPortPos.y = viewportPos.y;
if (viewportPos.y > maxViewportPos.y)
maxViewportPos.y = viewportPos.y;
if (viewportPos.z < minViewPortPos.z)
minViewPortPos.z = viewportPos.z;
if (viewportPos.z > maxViewportPos.z)
maxViewportPos.z = viewportPos.z;
}
// Change the FOV
}
How would I accomplish this? Thank you!
Your answer
Follow this Question
Related Questions
Change the FOV from "60" to "90" smoothly when pressing "W" (C#, first time posting, beginner) 2 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How to rotate camera diagonally over players shoulder while still facing towards players direction 0 Answers
Why are my 2D sprite GameObjects blinking and how do I fix this problem? 0 Answers