如何在Unity中为对象3d添加惯性?

时间:2018-08-23 07:35:16

标签: unity3d inertia

我创建了一个游戏,我需要对物体使用惯性。

示例:

GAMEIMAGE

图像显示了我所需要的一切。 当我触摸屏幕时,blueObject不再使用brownObject的位置和redObject的旋转。然后添加组件Rigidbody。物体掉下来了。我需要他沿着他的轨迹(惯性)进一步下降。

我尝试使用addForce(transform.forward * float),这不起作用。

2 个答案:

答案 0 :(得分:0)

通过设置变换的位置,您无需使用Unity Physics引擎。从仿真开始,您的立方体必须具有刚体,这里需要的是弹簧接头(https://docs.unity3d.com/Manual/class-SpringJoint.html)或固定接头。

答案 1 :(得分:0)

释放物体时,您需要计算当前速度。

跟踪最后一帧和当前帧的位置,并使用Time.deltaTime补偿不同的帧速率。

然后将此速度设置为物体的刚体。 (AddForce只是在操纵速度,但是取决于ForceMode,它会考虑质量等)。

public Vector3 lastPosition = Vector3.zero;

void Update()
{
    // maybe do : if(lastPosition != Vector3.zero) to be sure



    Vector3 obj_velocity = (lastPosition - transform.position) * Time.deltaTime;
    lastPosition = transform.position;

    // if you release the object, do your thing, add rigidbody, then:
    rb.velocity = obj_velocity; 
}

那应该产生“惯性”。速度包含方向和速度。