1

我正在寻找一种类似于 Tiny Wings 中使用的相机缩放效果,其中相机根据角色高度缩小。

我希望角色在达到设定的高度后开始缩放,并且我希望缩放是非线性的,以便角色随着屏幕的上升而逐渐接近相机边界。

我目前正在使用以下代码进行线性缩放

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

这导致播放器始终距离屏幕顶部 30%。我试图找到一个优雅的解决方案,这将导致玩家从屏幕边缘移动 30% 到距离屏幕边缘 10%,具体取决于角色在游戏世界中的高度。

4

1 回答 1

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));

基本上,我得到了角色开始缩放的位置和角色可以达到的最大高度之间的距离,作为最大高度的百分比。

我反转该数字并将其乘以定标器。我将此百分比值乘以比例计算中使用的玩家身高。这导致使用随着角色身高增加而移动低于角色的角色位置来计算比例。

于 2012-12-11T16:23:45.183 回答