短暂延迟后重力适用。为什么?

时间:2017-11-02 22:31:33

标签: c# unity3d

我使用Instantiate来生成一个对象。但是当它首先出现时它缓慢下降然后它达到最大速度。在第二个想法,我认为这是物理在现实生活中的工作方式。但我想让它在产生后立即获得最大速度。这甚至可能吗?我正在使用Unity的物理学。

2 个答案:

答案 0 :(得分:0)

如果它是一个刚体,你可以在实例化时添加一个力。

答案 1 :(得分:0)

如果你想绕过实际的物理引擎即获得不真实的行为,一种方法是将你的对象RigidBody标记为kinematic并改变你的对象'更新期间手动transform.position(同时考虑帧之间的增量时间),使其以恒定速度向下移动。请注意,这将与物理引擎的其他部分混淆,例如碰撞。

如果你仍然想要使用物理引擎,一种快速的实验方法,看看它是否适合你就可以在坠落的对象被实例化时做RigidBody.AddForce(0, 0, force, ForceMode.Impulse);之类的事情。 forcefloat并且定义了力的大小,即物体被压下的难度。上面对AddForce的调用假定z轴是垂直轴,我忘了Unity中的哪一个。

根据您的使用情况,这可能对您有用。我不知道你的用例是什么。也许你不希望你的衍生物体在撞击地面时反弹,并且处理常规的植物和力量会使它反弹。在这种情况下,只需手动将其向下移动。

更多信息here

作为旁注,除非物体掉落是有意义的,你是否考虑直接在地面上产生它?