在跟踪多个对象时,将摄像机控制在矩形内

本文关键字:摄像机 控制 跟踪 对象 | 更新日期: 2023-09-27 18:16:12

我正在制作一款带有动态摄像头的2D平台游戏。摄像机必须同时跟踪4名玩家,这样他们才能同时出现在屏幕上。此外,摄像机不能移动到预定义的矩形边界之外。我试过实现它,但我似乎就是无法获得缩放相机的过程,以便它总是尽可能接近四个物体。

目前我得到的一般算法是1. 通过使用4个被跟踪的对象位置计算一个2D轴对齐的边界框来定义观看空间,并使用其中心作为相机位置(或平均)2. 通过使用从相机位置到每个被跟踪对象的矢量,使用最大的x或y值来计算正射影大小。

  1. 如果相机超出了相机的边界,则计算多余的量并向相反方向移动。

这在纸上看起来很简单,但我似乎不能得到一个正确的工作实现。

在跟踪多个对象时,将摄像机控制在矩形内

为什么不取4个球员位置的平均值,并将其用作相机位置,同时检查球员是否超出边界,如果超出边界,则缩小。

float x = 0;
float y = 0;
GameObject[] players = new GameObjects[5];
foreach(GameObject _ply in players)
{
  x += _ply.transform.position.x;
  y += _ply.transform.position.y;

}
x = x/players.Length;
y = y/players.Length;
foreach(GameObject _ply in players)
{
  if(_ply.transform.position.x > (x + (Screen.Width / 2)))
    //zoom out
  if(_ply.transform.position.y > (y + (Screen.Height / 2)))
    //zoom out

}

但是你必须修复缩放