问一个力的计算问题

已知一个碰撞体的rigidbody和Collider信息,我想让这个碰撞体移动指定距离然后停下,该如何计算出施加的力?不能用线性速度然后在update中判断位置然后去停止。 :thinking:

摩擦力:质量 * 重力加速度 * 摩擦系数
力做功: W=F*S
摩擦力做功 = 施加的力做功。

这个公式不行,得和线性衰减值、摩擦力相关

哪个公式?

打错字了。我需要使用配置在组件上的属性(弹力、摩擦力、重力倍数、线性衰减)去计算这个力,通用的物理公式不行。

想到个笨方法,施加大小为10的力,看物体能走多远,写死在代码里,然后运行时用实际距离去除它,得出的系数再乘10 :sweat_smile:

放缩法。好聪明的办法,我感觉挺好的呀

你是说,组件没有提供摩擦力系数吧。我记得是有提供的。

我需要的计算施加力的公式是使用组件上配置的属性来算出施加力。你说的摩擦力做的功=施加力的做功,这当然没错,但是没用,因为已知的条件没法往这个公式上套。简而言之,我现在只知道

这些数据,想知道让它走移动200像素得多大的力,怎么算。

首先距离单位不应该使用像素,需要将像素转换为物理引擎中的距离单位。

  • 假设需要移动 200 单位的距离。

    • 在此期间摩擦力做功为:(同时这也是施加的力做功)

    • 摩擦力 = 刚体质量 * 重力加速度 * 摩擦力系数。

    • 摩擦力做功 = 200 * 摩擦力

  • 计算需要施加的力及距离:

    • 首先施加的力必须大于静摩擦力。即需要使物体移动起来

    • 施加的力(F) 与 施加的力作用距离(S)为:(此处为函数关系,并不确定。即施加的力的做功距离会根据施加力的大小变化)

    • F = 摩擦力做功/S

你需要从引擎中获取的变量为:刚体质量,重力加速度,摩擦力系数。移动的总距离已确定,力的大小是因变量,力作用的距离是结果。上面的三个变量搜一搜,都有。