为啥我的 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
【问题讨论】:
碰到边界时你想让它做什么? 您能告诉我们Dodge
的physicsBody
是如何定义的吗?
当“闪避”触及边界时,我希望它反弹回来。
我将物理体添加到我原来的问题中。
物理世界有一个错误,如果你将冲动增加 10 的倍数,物体可能会卡在边界内,迫使它们被困住(所以 dx:1000,dy :-100) 会反弹
【参考方案1】:
您是否尝试在基于边缘的物理体上将摩擦力设置为 0? (屏幕边缘)这可能会导致问题。即使基于体积的物理体没有摩擦(球),除非基于边缘的边界(屏幕边缘)也没有设置摩擦,否则仍会引起摩擦。
【讨论】:
【参考方案2】:你试过用 applyforce 代替 applyimpulse 吗?
dodge.physicsBody!.applyForce(CGVector(dx: 100, dy: -100))
【讨论】:
这个问题没关系,applyImpulse
只是直接添加到速度,applyForce
在物理阶段进行计算以确定速度以上是关于为啥我的 SKSpriteNode 在触及边界时会变慢?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 SKSpriteNode 没有以图像的默认分辨率显示?
如何自动显示图例,使其触及 Matlab(R 2019b)图中角落的边界?