为啥我的 SKSpriteNode 在触及边界时会变慢?

Posted

技术标签:

【中文标题】为啥我的 SKSpriteNode 在触及边界时会变慢?【英文标题】:Why does my SKSpriteNode slows down when it touches the boundaries?为什么我的 SKSpriteNode 在触及边界时会变慢? 【发布时间】:2016-09-13 16:36:51 【问题描述】:
physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)

let dodge = childNodeWithName(Dodge) as! SKSpriteNode
dodge.physicsBody!.applyImpulse(CGVector(dx: 100.0, dy: -100))

当球触及我设置的边界时,它会减速或停止移动。

允许未选中旋转, 摩擦力为 0, 恢复到1, 线性阻尼为 0, 角度阻尼为 0

【问题讨论】:

碰到边界时你想让它做什么? 您能告诉我们DodgephysicsBody 是如何定义的吗? 当“闪避”触及边界时,我希望它反弹回来。 我将物理体添加到我原来的问题中。 物理世界有一个错误,如果你将冲动增加 10 的倍数,物体可能会卡在边界内,迫使它们被困住(所以 dx:1000,dy :-100) 会反弹 【参考方案1】:

您是否尝试在基于边缘的物理体上将摩擦力设置为 0? (屏幕边缘)这可能会导致问题。即使基于体积的物理体没有摩擦(球),除非基于边缘的边界(屏幕边缘)也没有设置摩擦,否则仍会引起摩擦。

【讨论】:

【参考方案2】:

你试过用 applyforce 代替 applyimpulse 吗?

dodge.physicsBody!.applyForce(CGVector(dx: 100, dy: -100))

【讨论】:

这个问题没关系,applyImpulse 只是直接添加到速度,applyForce 在物理阶段进行计算以确定速度

以上是关于为啥我的 SKSpriteNode 在触及边界时会变慢?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 SKSpriteNode 没有以图像的默认分辨率显示?

我的角色 Sprite Node 移动时抖动,为啥?

如何自动显示图例,使其触及 Matlab(R 2019b)图中角落的边界?

为啥 SKSpriteNode(fileNamed:) 使用 Swift 在 iOS 中生成 nil?

为啥我的精灵没有用图像初始化?

停止 SKSpriteNode 离开视图 (Swift)