首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在我的SKSpriteNodes游戏中,我很难动态地改变SpriteKit速度值

在我的SKSpriteNodes游戏中,我很难动态地改变SpriteKit速度值
EN

Stack Overflow用户
提问于 2020-10-14 20:43:49
回答 1查看 48关注 0票数 0

在我的游戏中,我实现了无限滚动平台和一个从屏幕底部开始滚动到顶部的背景。当到达屏幕顶部并在底部出现一个新集时,它们将被删除。我的问题是动态调整所有平台的速度。我有一个系统,涉及一个开关箱,可以用一个UIButton控制,并控制‘状态’的平台,背景和我的播放器节点在其中。这包括播放器节点的某些属性,以及平台和背景在开关情况下的每种状态中滚动的速度。我正在尝试使用.speed属性SKSpriteNode,但是它没有按预期工作。这里是我的开关箱的一个示例重现:

代码语言:javascript
运行
复制
switch state {
case 1:
     background.speed = 1
     platform.speed = 1
case 2:
     background.speed = 2
     platform.speed = 2
}

这样,我就可以用按钮控制开关箱的哪种状态,然后在案例1和案例2之间返回。我可以到案例2,使速度是2,如果我想的话,返回到案例1,再次使速度1。所以实际上发生的是,当我改变开关箱的状态时,现有的平台速度实际上不符合新的速度值,只有在速度值变化之后产生的新平台。所以实时的情况是,我有平台在屏幕上移动,新的平台符合新的值,追赶并传递在新的平台之前产生的平台。我需要每个平台节点实时更新,所以每个集合之间的间隔是相等的。

经过大量的尝试和错误,我不完全确定我错过了什么,但如果有人对可能的解决方案有任何想法,那将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2020-10-19 16:32:32

我想你对平台的性质和关系有问题。平台属性代表什么?数组还是一次又一次被重写的对象平台?

您应该将平台置于一些SKNode下,并改变SKNode的速度。

所以在代码中:

类中的allPlatforms.addChild(platform)

  • and

  • 在类中添加类型为SKnode的属性allPlatforms并在开始时对其进行初始化。

  • 每次添加新平台时都将其作为子平台添加到allPlatforms下,因此在删除时,请从allPlatforms:

  • 中删除

而不是仅仅改变allPlatforms的速度而不是platform,它应该可以工作,但另一个问题可能是它不是数组,但是我看不到您的代码,所以我猜:/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64361232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档