小编Mea*_*lix的帖子

统一。试图伪造内部船舶重力。旋转物体的刚体孩子不断滑动

我正在尝试模拟具有内部重力的船舶/空间站。

为了实现这一点,我将玩家和飞船的所有内容都设为飞船的子级。飞船本身有对撞机,但没有刚体组件。这个想法是随着船的移动,它的所有内容也会移动。到目前为止非常简单。

为了模拟飞船中的重力,玩家控制器和所有刚体都关闭了默认重力。代替标准,每一帧都沿着母船的负向上向量施加一个力。

这种工作,但有一个主要问题我必须在这件事稳固之前解决。所有刚体都非常缓慢地在船内部滑动。

我知道这可能是由于地板的更新位置加上重力导致某种剪切力。物体总是逆着船的旋转而滑动。

我已经尝试过将物理材料的所有物理属性拖到质量上等等。这些都没有奏效,而且我很确定这是由于地板在移动的基本事实,即使 RB是地板所属对象的子项。

任何人都有解决方案,而不是某种胶带?我可以尝试使一切都成为动态的,并且仅在发生某些外部碰撞或其他事情时才“唤醒”,但这可能会变得非常麻烦。我需要它以尽可能多的通用方式工作。

一些代码:

在船上

void Update () 
{
    transform.Rotate(new Vector3(Time.deltaTime * 0.125f,Time.deltaTime*0.5f,0));
}

void FixedUpdate()
{
Vector3 tempVec;

foreach(Rigidbody rb in rigidBodies)
    {
        //Gravity!!

        tempVec = transform.up * -9.81f * rb.mass * Time.deltaTime;         
        rb.AddForce(tempVec, ForceMode.Acceleration);
    }

}
Run Code Online (Sandbox Code Playgroud)

我还开发了一个版本,其中船跟随刚体的运动。我无法直接进行育儿,因此我必须简单地在每一帧手动设置变换以匹配物理代理。这仍然具有与上述相同的效果,尽管这可能是我最终想要移动船的方式,因为这将更恰当地与飞行机制联系起来。

c# physics rigid-bodies unity-game-engine

5
推荐指数
1
解决办法
1706
查看次数

标签 统计

c# ×1

physics ×1

rigid-bodies ×1

unity-game-engine ×1