gpt4 book ai didi

sprite-kit - SKShader 创建视差背景

转载 作者:行者123 更新时间:2023-12-04 02:03:41 28 4
gpt4 key购买 nike

带有固定相机的视差背景很容易实现,但由于我正在制作自上而下的 2D 空间探索游戏,我认为有一个 SKSpriteNode 填充屏幕并成为我的 SKCameraNode 的子项并使用 SKShader 绘制一个视差星空会更容易。

我继续使用 shadertoy 并找到了这个看起来很简单的着色器。我在 shadertoy 上成功地对其进行了调整,以接受 vec2() 作为我想作为 SKAttribute 传递的运动速度,以便它可以跟随我的船的运动。

这是原始来源:
https://www.shadertoy.com/view/XtjSDh

我设法对原始代码进行了转换,因此编译时没有任何错误,但屏幕上没有显示任何内容。我尝试了各个功能,它们确实可以生成固定图像。

有什么指示可以使它工作吗?

谢谢!

最佳答案

这不是一个真正的答案,但它比评论更多的信息,并突出了 SK 如何处理粒子的一些奇怪和适当性:

SceneKit 中有一些关于粒子的奇怪事情,可能适用于 SpriteKit。

  • 当您移动粒子系统时,您可以让粒子随之移动。这是默认行为:

  • 从文档:

    When the emitter creates particles, they are rendered as children of the emitter node. This means that they inherit the characteristics of the emitter node, just like nodes do. For example, if you rotate the emitter node, the positions of all of the spawned particles are rotated also. Depending on what effect you are simulating with the emitter, this may not be the correct behavior.



    事实上,对于大多数应用程序来说,这是错误的行为。但是对于您想要做的事情,这是理想的。您可以将新的 SKNodeEmitters 放置在飞船驶向的屏幕外,并将它们固定到“空间”,以便它们随着玩家飞船的方向变化而旋转,并且粒子将完全按照您的意愿/需要创建移动的感觉整个空间。
  • SpriteKit 具有以推进模拟的形式预构建或填充的能力:https://developer.apple.com/reference/spritekit/skemitternode/1398027-advancesimulationtime

  • 这意味着当 SKEmittors 出现在屏幕上时,您可以让星星准备好在太空中显示飞船驶向的任何地方。不需要加载延迟来构建星星,这会立即完成。

    就我所知,你需要一个 3 个粒子发射器来完成它,每个发射器的大小都和设备的屏幕一样大。爆出粒子,然后将您想要的每一层视差释放到相机正确“深度”处的目标节点,然后根据屏幕移动移动这些目标。

    有点凌乱,但可能比创建自己的系统更快、更容易、更有力地充满有趣的效果潜力。

    也许……我可能是错的。

    关于sprite-kit - SKShader 创建视差背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41046360/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com