【问题标题】:A algorithm for scaling game world depending on character position一种根据角色位置缩放游戏世界的算法
【发布时间】:2013-10-02 22:00:46
【问题描述】:

我正在构建一个 2 人游戏,目前滚动位置由 2 个字符位置的中点确定。但我有一个问题。当字符离得很远时,屏幕的滚动位置在这些字符的中间,因为它们移到了视野之外,所以没有人可见。

所以我正在寻找一种算法来确定世界应该处于何种比例以使角色出现在视野中。

您的时间很宝贵。

【问题讨论】:

    标签: algorithm math 2d-games


    【解决方案1】:

    假设您的屏幕(或窗口)是固定大小的,(Screen_Width, Screen_Height)

    现在您计算两个玩家之间的 X 和 Y 距离。

    xdist = abs(Player2.x - Player1.x);
    ydist = abs(Player2.y - Player1.y);
    

    计算 x 和 y 比例因子:

    xscale = Screen_Width / xdist;
    yscale = Screen_Height / ydist;
    

    并取较小的值。

    scale = min(xscale, yscale);
    

    现在,如果scale >= 1,那么玩家将适合屏幕。您不必进行任何缩放。您可以找到中点并绘制。

    如果是scale < 1,那么您必须将所有坐标缩放scale

    【讨论】:

      【解决方案2】:

      没有任何关于单元类型、IDE 或您在此处使用的语言的信息是一个可能的解决方案:

      function object calcScale(screen, player1, player2, midpoint):
         width = abs(player1.x-player2.x)
         height = abs(player1.y-player2.y)
         width = max(width,height)
         height = width
         x = min(player1.x, player2.x, midpoint.x-width/2)
         y = max(player1.y, player2.y, midpoint.y+height/2)
         s = (screen.width*screen.height) / (width*height)
      
         newscreen= {startx:x, starty:y, scale:s}
      
         return newscreen
      

      这假定一个方形视口,玩家始终居中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多