ios – SpriteKit物理接触对于移动场景的破坏

ios – SpriteKit物理接触对于移动场景的破坏,第1张

概述我创建了一个SpriteKit场景与物理身体.这是非常好的工作.我也在滚动场景,使用苹果最佳做法与“相机节点”. 我的场景节点树是这样的: Scene|- World |- Camera node |- Game nodes with physics bodys 我的问题是,在游戏过程中,我动态地创建了新的关节(主要是固定关节).在这一点上,世界节点的位置与起始位置不同(例如:开始时 我创建了一个SpriteKit场景与物理身体.这是非常好的工作.我也在滚动场景,使用苹果最佳做法与“相机节点”.

我的场景节点树是这样的:

Scene|- World   |- Camera node   |- Game nodes with physics bodys

我的问题是,在游戏过程中,我动态地创建了新的关节(主要是固定关节).在这一点上,世界节点的位置与起始位置不同(例如:开始时(0,0),游戏过程中(1000,500))
现在,固定关节的锚点不在我想要的位置,它在现场的某个地方.

我假设场景的坐标系与物理引擎的坐标系不同.

对于锚点,我使用以下转换:

[world.scene convertPoint:node.position fromNode:node.parent];

我想将锚点设置在“节点”的位置.
移动世界节点后,锚点的计算不再运行.

谢谢你的帮助!

Greetz – Nekro

更新:

播放器上的中心场景的代码

- (voID)centerOnNode:(SKNode*)node {    CGPoint camerapositionInScene = [node.scene convertPoint:node.position fromNode:node.parent];    node.parent.position = CGPointMake(node.parent.position.x - camerapositionInScene.x,node.parent.position.y - camerapositionInScene.y);}
解决方法 使用SpriteKit物理接口有两个要求:

>定义世界(场景)空间中的关节.
>不要动摇世界.

从你的问题和意见中,听起来你已经#1对了:当关节不在场景的直接孩子的节点之间时,您需要将坐标转换为场景空间,然后再使用它们来定义关节.

但是,当您尝试移动根坐标系时,SpriteKit物理学不会很好地处理它.所以,通过移动世界来实施“摄像机”会导致关节的麻烦.代替:

>如果您只能针对iOS 9.0 / OS X 10.11 / tvOS 9.0及更高版本,请使用SKCameraNode而不是移动世界.这也比较容易

(如果您想知道是否只支持iOS 9,请查看adoption rate statistics,并将其与您的开发计划进行比较…如果您不运送一段时间,iOS 9可能是“-1” *** 作系统版本,记住,热心客户和早期采用者之间存在很高的相关性.)>如果您仍然支持iOS 8 / OS X 10.10,请尝试为您的场景添加一个额外的图层:通过移动作为场景的孩子的节点和所有游戏内容的父母来伪造相机.

总结

以上是内存溢出为你收集整理的ios – SpriteKit物理接触对于移动场景的破坏全部内容,希望文章能够帮你解决ios – SpriteKit物理接触对于移动场景的破坏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1097339.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存