ios - 视差效果的公式

标签 ios iphone ipad

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

是否存在可以创建具有多个图层的视差效果的良好公式?

谢谢

最佳答案

您可以将其视为类似的三角形问题。想象一下地平线上的某个点,在游戏的后面一直呆在那里。假定该点距屏幕H米,其中H是一个大数字。您可以选择此数字作为您想要的任何数字。更改其值时,效果将随之变化。您必须尝试一下它才能看到自己喜欢的东西。

假设第一层的速度为1(或某个常数的一倍)。然后,屏幕以1的速度和H的距离移动。

现在,假设每个图层与上一个图层相距x距离。再次,像H一样,只要x比H小,您就可以选择x来达到期望的效果。

因此,例如,前景与屏幕之间的距离为0,第一层向后的距离为x单位,第二层向后的距离为2x单位,依此类推。

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

H / 1 = (H - x) / y

或求解y:
y = (H - x) / H

进入屏幕的第一层。

更一般的公式如下:
speed(i) = ((H - ix) a) / H

哪里:
  • a-前景(屏幕)层的速度
  • i-我们正在计算
  • 速度的图层
  • x-每一层到最后一层到屏幕的距离(更改此层以调整视差效果)
  • H-到地平线的距离(必须大于x的层数。更改此值以调整视差效果)
  • 关于ios - 视差效果的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667587/

    相关文章:

    objective-c - UITableView setContentOffset但不滚动tableView吗?

    ios - iphone XR、XS Max 上的 modalPresentationStyle formSheet 问题

    iphone - SenTesting OCUnit 和 GHUnit 测试的区别

    iphone - 播放png动画时出现延迟

    iphone - 创建IBOutlet并用代码连接

    ios - Apple App Store拒绝5.1.5

    iphone - 圆弧 "It is not safe to remove an unused autorelease message"

    iphone - 如何设计好看的 iPhone 应用程序

    iphone - 最终 TableView :heightForRowAtIndexPath: solution

    ios - 应用因 "iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution"被拒绝