在跟踪多个对象时将相机约束为矩形

时间:2014-08-02 23:41:35

标签: c# camera unity3d unity3d-2dtools

我正在制作一款具有动态相机的2D平台游戏。相机必须同时跟踪4个玩家,以便他们全部在屏幕上。此外,相机不得移动超出预定义的矩形边界。我已经尝试过实现它,但我似乎无法完成缩放相机的过程,因此它总是尽可能接近四个物体。

我到目前为止的通用算法是  1.通过使用被跟踪的4个对象位置计算2D轴对齐边界框来定义观察空间,并将其中心用作相机位置(或平均) 2.使用从摄像机位置到被跟踪每个对象的矢量,使用最大的x OR y值计算正交尺寸。

  1. 如果相机超出相机的边界,则计算多余的量并以相反的方向移位。
  2. 这在纸面上看起来很简单,但我似乎无法得到正确的工作实施。

1 个答案:

答案 0 :(得分:0)

为什么不拿这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


}

但你必须修理Zoomin。