【问题标题】:Camera zooming effect相机变焦效果
【发布时间】:2012-12-10 13:17:46
【问题描述】:
我正在寻找一种类似于 Tiny Wings 中使用的相机缩放效果,其中相机根据角色高度缩小。
我希望角色在达到设定高度后开始缩放,并且我希望缩放是非线性的,以便角色在屏幕上越往上越靠近相机边界。
我目前正在使用以下代码进行线性缩放
camera.scale = MIN(1, SCREEN_HEIGHT*0.7 / player_position_y);
这会导致播放器始终与屏幕顶部保持 30% 的距离。我试图找到一个优雅的解决方案,根据角色在游戏世界中的高度,让玩家从屏幕边缘移动 30% 到距离屏幕边缘 10%。
【问题讨论】:
标签:
iphone
cocos2d-iphone
camera
scaling
zooming
【解决方案1】:
为了完成,我发布了我想出的解决方案。
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));
基本上,我得到了角色开始缩放的位置和角色可以达到的最大高度之间的距离,作为最大高度的百分比。
我将这个数字取反并乘以一个定标器。我将此百分比值乘以比例计算中使用的玩家身高。这会导致使用随着角色身高增加而移动低于角色的角色位置来计算比例。