在二维物理中使用力
-
介绍
添加角色的物理实体后,二维物理引擎会管理这个角色,使其按照物理规律移动和转动。要影响角色的行为,我们可以对它施加一些外力,而物理引擎将计算该物体将怎样被这个外力影响。
施加外力
要施加外力,你可以使用以下积木:

这个积木采用 2 个输入参数:外力的强度以及施加这个力的方向。这里的方向与“面向方向”积木中的方向一样:0 度方向指向上方,90 度方向指向右侧,等等。注意,外力会一直推动物体,所以它的效果会持续下去。
施加外力例子
在这个程序中,我们添加了一个篮球,它会因为重力而掉落。如果我们在向上方向添加一个 5000 的推力,篮球就会开始向上漂浮,因为这个推力比球的重力要更大:

防止受力移动/旋转
当对物体施加力时,它可以使物体移动或转动。如果我们不希望物体在外力作用下发生移动或旋转,我们可以给物理引擎一些限制。例如,我们可以告诉物理引擎“这个物体不会因为外力而移动”,然后物理引擎作计算的时候会假设这个物体保持原地。
你可以使用以下 2 个积木来添加或删除此类限制:

如果选择“是”,则将应用限制;如果选择“否”,则限制将被取消。请注意,这些限制仅限于物体如何响应外力。添加这些限制后,你仍然可以直接设置物体的移动或旋转速度。
在固定位置施加外力
上面的“施加外力”积木会在物体的中心推动它,即使物体在移动中,所以它不会让物体产生旋转。
有时我们需要在世界中的一个固定位置添加外力。例如,如果我们正在模拟正在吹气的风扇,那么这个气流会从特定的位置推动其他物体。
你可以使用以下积木来指定外力及其位置:

2 个新添加的输入参数是施加外力的 X 和 Y 位置。
示例:在某固定位置添加外力
在这个例子中,我们在世界中放置了一根高大的棍子,并阻止它因受力而移动。如果我们在 X = 0 和 Y = 50 处(即中心点的上方)添加一个向右推的外力,棍子将开始顺时针旋转。如果我们在 Y = -50 的位置(即中心点的下方)施加相同的外力,棍子将沿相反方向旋转。
移除所有外力
你可以向一个对象添加多个外力。要删除所有这些外力,你可以使用以下积木:

添加脉冲
脉冲是在很短时间内施加的力,而上面描述的外力是连续施加的力。比如我们踢足球,脚接触球的时间很短,所以应该用脉冲来模拟它的作用;另一方面,要发射火箭,我们需要不断地把它推得越来越高,所以这个推力应该用持续的外力来模拟。
以下是更多例子:
- 用连续的外力模拟:汽车发动机、风、直升机螺旋桨;
- 用瞬时的脉冲模拟:从地上跳起来,用球拍击打网球,射出子弹;
要添加脉冲,你可以使用以下 2 个积木,它们与添加外力的积木非常相似:

请注意,由于脉冲仅在很短的时间内应用,因此你通常需要使用更大的强度值才能看到其效果。此外,我们从不需要“移除一个脉冲”,因为脉冲在被应用那个瞬间后就自动消除了。
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login