【问题标题】:Contrain camera to rectangle while tracking multiple objects在跟踪多个对象时将相机约束到矩形
【发布时间】:2014-08-02 23:41:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# camera unity3d unity3d-2dtools


    【解决方案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
    
    
    }
    

    但你必须修复 Zoomin。

    【讨论】:

    • 对不起,我应该在最初的问题中更清楚一点。我已经设法使用轴对齐的边界框并通过平均来计算相机位置。我遇到的主要问题是缩放过程,以便它靠近对象,同时被限制在该区域。
    • 所以你只需要放大和缩小功能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2014-06-20
    • 2017-12-27
    • 2020-02-02
    • 2012-08-26
    • 2012-11-11
    相关资源
    最近更新 更多