视差效应公式

时间:2014-02-10 01:22:09

标签: ios iphone ipad

我正在创建一个包含3层(远,近,近)的SpriteKit游戏,我希望这些图层在角色运行时以不同的水平速度移动。事实上,角色永远不会从中心移动,地板/背景是从右向左移动的角色。

是否有一个公式可以用于创建具有多个图层的视差效果?

感谢

1 个答案:

答案 0 :(得分:3)

您可以将此视为类似的三角形问题。想象一下地平线上的一点,在游戏后面等待。假设该点距离屏幕H米,其中H是一个大数字。您可以选择此号码作为您想要的任何数字。当您更改其值时,效果将根据更改而变化。你必须玩它才能看到你喜欢的东西。

假设第一层的速度是1(或一些常数)。然后,屏幕以1的速度移动并且距离为H.

现在假设每一层距离前一层到地平线的距离为x。同样,与H一样,只要x与H相比较小,就可以选择x作为你想要的任何效果。

因此,例如,前景距离屏幕的距离为0,第一层后面将是x个单位,第二层将是2x单位,依此类推。

现在我们可以做类似的三角形。屏幕层在距地平线的距离H处的速度为1。第二层背面处于与地平线距离H-x处的未知速度(y)。我们知道:

H / 1 = (H - x) / y

或解决y:

y = (H - x) / H

第一层进入屏幕。


更通用的公式如下:

speed(i) = ((H - ix) a) / H

其中:

  • a - 前景(屏幕)图层的速度
  • i - 我们计算
  • 速度的图层
  • x - 每一层从最后一层进入屏幕的距离(更改此项以调整视差效果)
  • H - 到Horizo​​n的距离(必须大于层数乘以x。更改此项以调整视差效果)