0

我正在制作一个带有动态相机的 2D 平台游戏。摄像机必须同时跟踪 4 名玩家,以便他们都在屏幕上。此外,摄像机不得移动超出预定义的矩形边界。我已经尝试过实现它,但我似乎无法获得缩放相机的过程,以便它始终尽可能靠近四个对象。

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

  1. 如果相机超出相机的边界,则计算超出量并沿相反方向位移。

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

4

1 回答 1

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。

于 2014-08-03T02:11:41.567 回答