带有 Gravity False 的 SpriteKit 节点倾斜到位
Posted
技术标签:
【中文标题】带有 Gravity False 的 SpriteKit 节点倾斜到位【英文标题】:SpriteKit Nodes with Gravity False tilted in place 【发布时间】:2017-02-27 04:15:00 【问题描述】:我正在构建一个菜单游戏场景,其中有一个徽标和 4 个按钮,所有这些都有一个 SKPhysicsBody 和图像的矩形大小。 我只设置了所有这些:
logo.physicsBody = SKPhysicsBody(rectangleOf: logo.size)
logo.physicsBody?.affectedByGravity = false
创建对象的完整代码(都一样)
logo = SKSpriteNode(imageNamed: "logo")
logo.anchorPoint = CGPoint.zero
logo.name = "logo"
logo.zPosition = 2
logo.size = CGSize(width: 309, height: 272)
logo.setScale(Generic.utilities.getScale())
self.addChild(logo)
logo.position = CGPoint(x: self.frame.width/2 - logo.size.width/2, y: self.frame.height - logo.size.height - 40)
logo.physicsBody = SKPhysicsBody(rectangleOf: logo.size)
logo.physicsBody?.affectedByGravity = false
在按下按钮的过程中,我将所有受影响的节点更改为 true,这样它们就可以从屏幕上掉下来,并且新元素可以进来。
我遇到的问题是,当我运行应用程序时,所有元素都在屏幕上移动/倾斜,而不是在原来的位置
我只想让它们保持原位,直到我单击其中一个按钮,然后它们会从屏幕上掉下来。
为什么当我设置一个物理体和affectedByGravity时它们都像这样倾斜?
【问题讨论】:
您需要显示更多代码...例如如何创建对象、设置的重力、至少一个对象的整个物理体代码。我能够创建一个带有 3 个正方形的快速演示(2 个添加在场景编辑器中,一个添加在代码中,1 个在场景编辑器中设置了物理,另外 2 个在运行时创建了物理。添加的那个在场景编辑器中,场景加载时会轻微旋转(不知道为什么)。提供更多信息,我们可以解决这个问题 @RonMyschuk 为问题添加了更多代码 可以显示重力设置吗 对不起,我很茫然。我将代码粘贴到我的测试项目中,它按预期工作。我并不是要质疑您的“没有更多代码”,但代码或 sks 场景文件(如果您正在使用)中必须有其他内容导致了这种情况。目前我要质疑的两件事是 1)您的 getScale 函数与此有关吗? 2) 场景中是否有其他物理对象相互重叠?如果是这样,他们可能会在争夺霸权的斗争中将彼此推向不同的位置和角度:( 在我看来你的元素相互重叠,碰撞测试正在移动你的精灵 【参考方案1】:好吧,感谢@RonMyschuk 和@Knight0fDragon,我发现(以前不知道)我可以添加到我的场景中加载以下内容:
skView.showsPhysics = true
在你的节点的物理主体周围添加边界线,这样你就可以看到它们交互。通过这样做,我看到我的一个节点的physicsBody 完全处于不同的位置,那么它应该
通过处理这个问题,一切恢复正常
【讨论】:
以上是关于带有 Gravity False 的 SpriteKit 节点倾斜到位的主要内容,如果未能解决你的问题,请参考以下文章
带有 HTML 5 画布的 Sprite-Sheet BLIT?
使用 Flex 附加带有 ActionScript3 的 Sprite
Sprite Kit:很多精灵 (1000+),带有位 Blitting
在 window.resize 事件期间,带有 sprite-animation 的 Div 没有正确更改