在二维物理中使用力
-
介绍
添加角色的物理实体后,二维物理引擎会管理这个角色,使其按照物理规律移动和转动。要影响角色的行为,我们可以对它施加一些外力,而物理引擎将计算该物体将怎样被这个外力影响。
施加外力
要施加外力,你可以使用以下积木:
这个积木采用 2 个输入参数:外力的强度以及施加这个力的方向。这里的方向与“面向方向”积木中的方向一样:0 度方向指向上方,90 度方向指向右侧,等等。注意,外力会一直推动物体,所以它的效果会持续下去。
施加外力例子
在这个程序中,我们添加了一个篮球,它会因为重力而掉落。如果我们在向上方向添加一个 5000 的推力,篮球就会开始向上漂浮,因为这个推力比球的重力要更大:
防止受力移动/旋转
当对物体施加力时,它可以使物体移动或转动。如果我们不希望物体在外力作用下发生移动或旋转,我们可以给物理引擎一些限制。例如,我们可以告诉物理引擎“这个物体不会因为外力而移动”,然后物理引擎作计算的时候会假设这个物体保持原地。
你可以使用以下 2 个积木来添加或删除此类限制:
如果选择“是”,则将应用限制;如果选择“否”,则限制将被取消。请注意,这些限制仅限于物体如何响应外力。添加这些限制后,你仍然可以直接设置物体的移动或旋转速度。
在固定位置施加外力
上面的“施加外力”积木会在物体的中心推动它,即使物体在移动中,所以它不会让物体产生旋转。
有时我们需要在世界中的一个固定位置添加外力。例如,如果我们正在模拟正在吹气的风扇,那么这个气流会从特定的位置推动其他物体。
你可以使用以下积木来指定外力及其位置:
2 个新添加的输入参数是施加外力的 X 和 Y 位置。
示例:在某固定位置添加外力
在这个例子中,我们在世界中放置了一根高大的棍子,并阻止它因受力而移动。如果我们在 X = 0 和 Y = 50 处(即中心点的上方)添加一个向右推的外力,棍子将开始顺时针旋转。如果我们在 Y = -50 的位置(即中心点的下方)施加相同的外力,棍子将沿相反方向旋转。
移除所有外力
你可以向一个对象添加多个外力。要删除所有这些外力,你可以使用以下积木:
添加脉冲
脉冲是在很短时间内施加的力,而上面描述的外力是连续施加的力。比如我们踢足球,脚接触球的时间很短,所以应该用脉冲来模拟它的作用;另一方面,要发射火箭,我们需要不断地把它推得越来越高,所以这个推力应该用持续的外力来模拟。
以下是更多例子:
- 用连续的外力模拟:汽车发动机、风、直升机螺旋桨;
- 用瞬时的脉冲模拟:从地上跳起来,用球拍击打网球,射出子弹;
要添加脉冲,你可以使用以下 2 个积木,它们与添加外力的积木非常相似:
请注意,由于脉冲仅在很短的时间内应用,因此你通常需要使用更大的强度值才能看到其效果。此外,我们从不需要“移除一个脉冲”,因为脉冲在被应用那个瞬间后就自动消除了。