SKShader 创建视差背景

2024-01-01

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

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

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

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

有什么指示可以让它发挥作用吗?

Thanks!


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

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

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

来自文档:

当发射器创建粒子时,它们被渲染为 发射器节点。这意味着他们继承了 发射器节点,就像节点一样。例如,如果您旋转 发射器节点,所有生成粒子的位置是 也旋转。取决于您要模拟的效果 发射器,这可能不是正确的行为。

事实上,对于大多数应用程序来说,这是错误的行为。但对于你想做的事情来说,这是理想的。您可以将新的 SKNodeEmitters 放置在屏幕外飞船前进的位置,并将它们固定到“空间”,这样它们就会随着玩家飞船的方向变化而旋转,并且粒子将完全按照您想要/需要的方式来创建移动的感觉整个空间。

  1. SpriteKit 具有预构建或填充能力,以推进模拟的形式:https://developer.apple.com/reference/spritekit/skemitternode/1398027-advancesimulationtime https://developer.apple.com/reference/spritekit/skemitternode/1398027-advancesimulationtime

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


据我所知,您需要 3 个粒子发射器才能实现此目的,每个粒子发射器的大小与设备屏幕的大小相同。将粒子爆发出来,然后将您想要视差的每一层释放到距相机正确“深度”处的目标节点,然后根据屏幕移动移动这些目标来继续。

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

也许……我可能是错的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SKShader 创建视差背景 的相关文章

  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • Swift 3 Web 视图

    所以我刚刚更新到新的Xcode8 and Swift3但现在我的网络视图不起作用 这是我使用的代码 UIWebView loadRequest webView NSURLRequest URL NSURL string http hardw
  • Swift 3 中的 _ArrayType 去了哪里?

    我有一些用于中继的代码 ArrayType在 Swift 3 之前 我试图了解公共协议发生了什么 ArrayType 任何想法 ArrayType被重命名 ArrayProtocol 您可以在ArrayType swift https gi
  • 在 iMessage 应用程序中检查横向/纵向方向(扩展)

    见过很多检查方向的解决方案 但奇怪的是 没有一个有效 下面是代码片段 override func viewWillTransition to size CGSize with coordinator UIViewControllerTran
  • Three.js、自定义着色器和具有透明度的 png 纹理

    我有一个非常简单的 PNG 纹理 一个带有透明背景的灰色圆圈 我用它作为制服map for a THREE ShaderMaterial var uniforms THREE UniformsUtils merge basicShader
  • Swift 3 按钮文本自动调整大小

    因此 我有根据设备自动调整大小的按钮 我想知道如何使按钮文本自行调整大小 就像具有最小尺寸或比例的 UILable 一样 正如 Matt 上面所说的 UIButton 标题是通过 UILabel 显示的 您可以使用 minumScaleFa
  • 如何在 SpriteKit SKScene 类中启动 ReplayKit 屏幕录制

    我已经实施了ReplayKit in my SpriteKit游戏 但由于一切都在游戏内完成GameViewController录制按钮出现得太早 请看我的GameViewController下面的类 class GameViewContr
  • 带闭包的默认属性值使编译器重新编译所有文件

    This source https developer apple com library content documentation Swift Conceptual Swift Programming Language Initiali
  • Swift 仅删除字符串中的尾随空格

    SO 中的许多示例都固定两侧 即前导和尾随 我的要求只是关于尾随 我的输入文本是 保持我的左侧 期望的输出 保持我的左侧 当然 这个命令会删除两端 let cleansed messageText trimmingCharacters in
  • 如何从 GMSPlace 地址组件中提取街道、城市等

    我正在使用适用于 iOS 的 Google Places API 可以成功检索附近的地点并将地址显示为字符串 我想做的是提取地址组件 例如城市 以存储在数据库中 文档表明 GMSPlace 有一个 addressComponents 属性
  • 在 swift 3 的 textview 中显示属性文本?

    我想以斜体 粗体显示从服务器收到的文本 你好世界所以 responseObj text p b i hello i b i world gt i p if let postText String responseObj text as St
  • 无法调用类型“UnsafeMutablePointer”的初始值设定项

    我正在尝试将 Reachability swift 更新为 swift 3 0 但在将 Reachability 实例传递给回调函数时遇到问题 这是我的片段 请注意 self 可达性等级 var context SCNetworkReach
  • iOS9 Sprite 套件问题

    一切都很顺利 直到我升级到 xCode 7 和 iOS 9 我当前的项目是一个 2D 平台游戏 自从升级以来 我就陷入了我们许多人似乎都面临的精灵套件错误 错误的困扰 我的问题是 每次游戏在模拟器或设备上运行时 所有精灵的 zPositio
  • swift 3 gamecenter:参与者数量始终为 4

    我制作了一款与 swift 2 完美配合的 TurnBased 游戏 我可以成功地将代码更改为 swift 3 2 并纠正大约 400 个错误 但游戏中心有一个问题 我不知道如何修复它 当通过游戏中心视图控制器时 我将参与者的数量设置为 2
  • 快速转换:错误 - CGPathAddArc

    我正在尝试将我的 Swift 2 代码转换为最新语法 Swift 3 我收到以下错误 Nil 与预期的参数类型 UnsafePointer 不兼容 斯威夫特2代码 CGPathAddArc 路径 nil overlayView frame
  • 停止重复 UIImage 背景图案图像 - Swift

    我在 UITableView 中使用滑动来删除 在滑动中我需要添加图像 当我添加图像时 它会重复 如何停止重复 func tableView tableView UITableView editActionsForRowAt indexPa
  • Swift 3:将 UIButton 扩展添加到 ViewController

    我是 iOS Swift 的初学者 尝试创建一个没有 Storyboard 的简单应用程序 我创建了一个UIButton扩展名 我想在我的视图中添加一个简单的按钮 稍后将设置约束 不幸的是 该按钮不可见 如果有人帮助我 我将不胜感激 谢谢你
  • 如何在 swift 3 中发布原始数据?

    如果我使用 Postman 发布原始数据 就会收到响应 我正在使用这个代码 var dict Dictionary
  • 如何在 Swift 中枚举 OptionSetType?

    我在 Swift 中有一个自定义的 OptionSetType 结构 如何枚举一个实例的所有值 这是我的选项集类型 struct WeekdaySet OptionSetType let rawValue UInt8 init rawVal

随机推荐

  • 何时使用字典 | (合并)与|=(更新)运算符[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 何时在字典上使用合并和更新运算符 以下示例虽然调用方式有所不同 但它们的输出是相同的 a 1 a 2 b 3 c 6 in both b 4 d
  • C/C++ 基本类型是原子类型吗?

    C C 是基本类型吗 int double等等 原子的 例如线程安全 它们是否没有数据竞争 也就是说 如果一个线程写入此类类型的对象 而另一个线程从中读取 则该行为是否明确定义 如果不是 它取决于编译器还是其他什么 不 基本数据类型 例如
  • 如何在python3中计算ANSI CRC16多项式(0x8005)?

    我尝试使用此代码计算 ANSI CRC16 多项式 0x8005 import crcmod crc16 crcmod mkCrcFun 0x8005 0xffff True 但我收到此错误消息 ValueError 多项式的次数必须为 8
  • 如何将编辑文本值传递给适配器类

    我想将下面的活动中的文本值传递给 TextAdapter 类 公共类 SecondActivity 扩展 Activity EditText et1 TextView t1 t2 Button b1 b2 String result Con
  • 无法将参数发送到 PHP POST 参数 android

    我目前正在使用 android volley 并尝试通过发送productID来选择产品详细信息以获取产品的详细数据 JSONObject params new JSONObject try params put ProductID int
  • 如何解密 Objective C/IOS 中用 php 加密的文件?

    我在谷歌上搜索了太多这个错误 但没有发现任何有用的东西 我使用以下代码获取在 php 中加密的文件 mcrypt encrypt MCRYPT RIJNDAEL 128 privateencryptkey base64 encode fil
  • Hint.interpret 在用于 Polysemy.Sem 值时会给出编译器错误

    我正在尝试编译Polysemy https hackage haskell org package polysemy 1 2 3 0 docs Polysemy html运行时使用 Hint 语言 Haskell 解释器 https hac
  • 意外的 JDWP 错误 21

    HttpConnection conn HttpConnection Connector open strDefURL strBloggersURL 我有这一行抛出 InternalException 意外的 JDWP 错误 21 我使用它
  • 如何在Arduino中匹配字符串中的文本

    我在使用 Arduino 时遇到一些关于如何匹配文本的问题 I have String tmp CLIP 37011111111 145 0 我正在尝试匹配 if tmp startsWith CLIP mySerial println A
  • Rails 3 请求调度周期

    我正在研究 Rails 3 架构 以便了解分派请求的过程 整个过程非常简单 应用程序是一个机架应用程序 它最终将其调用消息委托给 ActionDispatch Routing RouteSet 的调用方法 该方法调度必要控制器的适当操作 它
  • javascript 函数可通过 javascript_include_tag 获得,但不能通过 asset pipeline 和 application.js 获得

    如果这已经发布在其他地方 我很抱歉 但我不确定如何表达对这个问题的搜索 基本上 我有fullcalendar js坐在app assets javascripts 在我的application js文件 当然在同一文件夹中 我有以下内容 r
  • 如何在 Qemu 下启动 FreeBSD 镜像

    我有一个 FreeBSD 映像 其中包含 boot loader 和 boot kernel 等 它在 EC2 实例下启动正常 但我想使用 Qemu 启动它 我尝试过各种方法 但都没有效果 见下文 qemu system x86 64 ke
  • 将列表项映射到带有参数的函数

    有什么方法可以将列表项与参数一起映射到函数吗 我有一个清单 pages p1 p2 p3 p4 p5 我必须调用函数myFunc对应于每个列表元素以及附加参数 以便可以计算以下内容 myFunc p1 additionalArgument
  • 扩展 Handlebars.js 模板

    有没有像 Django 那样扩展模板的方法 我的基本模板有一个只需几页的标题 我想为其他模板更改它 类似的东西 extends base html endblock 我正在使用 Ember js 据我所知 这个符号不存在 我也没有在车把模板
  • 带 Boost 的 Node-gyp 包含和库目录

    我正在尝试在我的 Windows 7 计算机上构建一个 Node C 插件 该插件使用 Boost 库中的一些类 然而 运行后 node gyp configure 成功了 当我运行时 我不断受到缺少头文件的攻击 node gyp buil
  • WPF 共享资源字典

    我已经使用自定义类在我的 WPF 应用程序中实现共享资源功能 这是创建和管理字典的示例代码 public class SharedResourceDictionary ResourceDictionary
  • 如何在 UIButton 上制作原生“脉冲效果”动画 - iOS

    我希望在 UIButton 上有某种脉冲动画 无限循环 缩小 缩小 以便它立即引起用户的注意 我看到了这个链接如何使用 webkit animation 向外环创建脉冲效果 https stackoverflow com questions
  • Rails 4 + 引导程序设置资产

    我正在尝试设置引导程序 on Rails4 using bootstrap sass我收到了这个著名的错误 Sprockets FileNotFound couldn t find file bootstrap in app assets
  • 产品目录API失败

    需要帮忙 我尝试从https developers facebook com docs marketing api dynamic product ads ads management v2 3创建的帐户 批准者为phone 创建了企业帐户
  • SKShader 创建视差背景

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