我正在使用Box2d进行自上而下的比赛。 “地面”是一系列瓷砖,其中每个瓷砖是具有传感器形状的静态主体。即使物体与地面没有真正“碰撞”,我能否对此产生摩擦效果?
如果Box2d不允许我这样做,我考虑通过检测当前正在移动物体的力,并施加与其相反的力来尝试实现我自己,但我不太确定如何检测到该力
答案 0 :(得分:6)
另一种方法是在身上设置linearDamping
。您可以根据对象所在的图块设置不同的颜色。
答案 1 :(得分:1)
无论其他力量如何,摩擦力都与身体的速度有关。
如果设置线性阻尼不够或依赖于b2Body的属性是不合适的,您可以轻松计算非线性摩擦力并每帧调用ApplyLinearImpulse()或ApplyLinearForce()。
使用b2Body.GetLinearVelocity()查询速度,根据需要按比例缩放(非线性)以获得力,并反转两个分量的符号。
如果您决定停止身体(当它足够慢以便坚持时),SetLinearVelocity()可以在没有计算的情况下完成任务。
答案 2 :(得分:0)
ApplyImpulse()
代替ApplyForce()
效果更好。