2012-12-10 39 views
1

我正在寻找像Tiny Wings中使用的相机变焦效果,其中相机根据人物高度缩小。相机变焦效果

我希望角色在达到设定高度后开始缩放,我希望缩放是非线性的,以便角色逐渐靠近相机边界,因为它在屏幕上向上移动。

我目前使用下面的代码来线性扩展

camera.scale = MIN(1, SCREEN_HEIGHT*0.7/player_position_y); 

这导致球员始终是从屏幕的顶部30%的路程。我试图找到一个优雅的解决方案,这将导致玩家从屏幕边缘的30%到屏幕边缘的10%之间,取决于角色游戏世界的高度。

回答

0

只是为了完成我发布我想出的解决方案。

 float scalar = 4; // Had to tweak this number to get the difference in scales to feel right 
     float distance = player_position_y - SCREEN_HEIGHT*0.7; 

     float percentage = distance/(SCREEN_HEIGHT*2 - SCREEN_HEIGHT*0.7) 

     percentage = 1 - (percentage/scalar); 

     self.scale = MIN(1, SCREEN_HEIGHT*0.70/(player_position_y * percentage)); 

基本上我拿到其中字符开始缩放和最大高度的字符可以达到最大高度的百分比之间的距离。

我反转该数字并乘以一个缩放器。我将这个百分比值乘以在比例计算中使用的玩家身高。这会导致在比例计算中使用角色获得高度时角色位置低于角色的位置。