【问题标题】:A SpriteKit CCFollow alternative?SpriteKit CCFollow 的替代品?
【发布时间】:2026-02-21 16:45:01
【问题描述】:

我读过 cocos 有一个名为 CCFollow 的方法,它可以将节点位置相应地更改为另一个节点的位置,例如“更改背景位置以跟随玩家位置”。在 SpriteKit 中有类似的东西吗?或者唯一的方法是手动或通过动作修改节点位置?

编辑

我尝试过像 moveTo 这样的动作来移动,它可以工作,但在我的游戏中,我必须移动一个大的背景图像和一些物理形状(这是我赛道的束缚)。使用 skaction 移动包含我所有游戏的节点可以工作,但它会导致 iphone4 抖动(即使使用恒定的 30 fps,它似乎也是 cpu intese 工作,几乎像 60% )。到目前为止,唯一的解决方案是简化和减少赛道尺寸,但我正在寻找其他一些解决方案......我已经阅读了关于 CCFollow 的信息,所以我认为这也许是解决我的麻烦的优化方法......

【问题讨论】:

  • 尝试在每帧使用目标位置发出一个 moveTo 动作。在 cocos2d 中由于动作执行延迟而无法工作,但它可能在 SK 中工作。
  • 谢谢我编辑了我的问题...
  • iPhone 4 很慢 - 考虑到它只比 iPhone 3GS 快约 33%,但必须为像素数是 4 倍的 Retina 显示屏提供服务。 30 fps 也永远不会看起来很流畅。您是否测试过,与静止时相比,只有在移动背景时帧率才会下降?
  • 当我移动轨道的物理键时,帧速率会下降,如果我停用此键,则滚动是平滑的...
  • 您正在移动的是一个静态(动态=NO)的身体吗?这可能会导致 CPU 使用率过高,因为内部物理引擎没有为静态物体改变其位置做好准备,从而触发了一些内部重新计算。

标签: ios iphone cocos2d-iphone sprite-kit


【解决方案1】:

更好的方法是改变相机位置。而不是使用大图像作为背景(强烈不推荐)

请参阅“移动相机”部分。

https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/KeepingUptoDate/KeepingUptoDate.html#//apple_ref/doc/uid/TP40013140-CH9-SW1

【讨论】:

  • “移动相机”部分讲了一种移动世界节点位置的方法来模拟相机的移动,移动世界节点位置也会移动物理体。实际上是已经在做的事情......