gpt4 book ai didi

c# - 统一。尝试伪造内部船舶重力。旋转物体的刚体 child 不断滑动

转载 作者:行者123 更新时间:2023-11-30 13:01:35 25 4
gpt4 key购买 nike

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

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

为了模拟船上的重力,玩家 Controller 和所有刚体都关闭了默认重力。与标准不同,每一帧都沿母船的负向上矢量施加一个力。

这种方法可行,但在这件事变得可靠之前我必须解决一个主要问题。所有刚体都非常缓慢地围绕飞船内部滑动。

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

我已经尝试过从物理 Material 到拖动到质量等的所有物理属性。这些都没有用,我很确定这是由于地板在移动的基本事实,即使尽管 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);
}

}

我还研究过一个版本,其中飞船跟随刚体运动。我不能做直接的父子关系,所以我不得不简单地在每一帧手动设置变换以匹配物理代理。这仍然具有与上述相同的效果,尽管这可能是我最终想要移动飞船的方式,因为这将更恰本地与飞行机制联系起来。

最佳答案

如果您将其等同于现实世界的场景,那么唯一阻止我们在地板上滑动的就是摩擦力。

物理库是否根据接触 Material 正确应用了摩擦力?如果不施加一定量的摩擦力(或克服摩擦力所需的最小力)应该可以防止您在地板上滑动。

虽然这与上面的“胶带”差不多,但如果它还没有包含执行它的方法,它可以巧妙地适应和扩展你的物理引擎。

关于c# - 统一。尝试伪造内部船舶重力。旋转物体的刚体 child 不断滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com