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 に答える