根据处理中的距离更改比例

时间:2018-12-14 09:24:28

标签: java processing

我正在尝试为两人游戏创建相机,该相机可以根据玩家距离进行放大和缩小。

当前执行此操作的代码

    float scale = 1;
    float distance = dist(player.location.x, player.location.y,     
    player2.location.x, player2.location.y);

    if (distance > 
    scale = 0.99; 
    }

    //Places the camera between the two players at all times. No matter what 
    scale the game is in.
    translate((-player.location.x * scale / 2) - (player2.location.x * scale / 
    2) + width / 2
    , (-player.location.y * scale / 2) - (player2.location.y * scale / 2) + height / 2);

    scale(scale);

我的计划是使用if语句,但这显然行不通。我当时正在考虑使用模数来执行此操作,但是我还不完全了解如何使用模数。有人对我有一个解决此问题的想法吗?

应该使用距离变量检查第一位玩家和第二位玩家之间的距离。例如,两个玩家之间的距离等于比例的那一刻应该改变0.01。由于距离,比例会从1更改为0.99。我想如何减去或增加100距离。

0 dist = scale 1
100 dist = scale 0.99
200 dist = scale 0.98
ect.

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这个简单的线性表达式将允许连续缩放。

scale = max(0.1, 1 - distance/10000);

如果您希望比例尺每增加100距离以0.01的增量减小,请使用以下内容(按照您的建议,它使用模数):

scale = max(0.1, 1 - (distance - distance%100)/10000)

max()是一个内置处理函数,在这里我已使用它为缩放因子提供下限值(不能低于0.1)。