我正在尝试为两人游戏创建相机,该相机可以根据玩家距离进行放大和缩小。
当前执行此操作的代码
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.
我该怎么做?
答案 0 :(得分:0)
这个简单的线性表达式将允许连续缩放。
scale = max(0.1, 1 - distance/10000);
如果您希望比例尺每增加100距离以0.01的增量减小,请使用以下内容(按照您的建议,它使用模数):
scale = max(0.1, 1 - (distance - distance%100)/10000)
max()
是一个内置处理函数,在这里我已使用它为缩放因子提供下限值(不能低于0.1)。