【问题标题】:Staying with player on a moving object with physics and rigidbody doesn't work in Unity在 Unity 中,与玩家一起停留在具有物理和刚体的移动物体上不起作用
【发布时间】:2019-11-14 23:13:36
【问题描述】:

我正在尝试制作可以站在使用轮式碰撞器、刚体和简单脚本前进的移动火车的地面上的角色控制器。我尝试了很多教程,他们将 PlayerController 作为移动平台的子节点,但是当我使用以下脚本时它不起作用:

{
    public GameObject Player;

    private void OnTriggerEnter(Collider other)
    {
        if(other.gameObject == Player)
        {
            Player.transform.parent = transform;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject == Player)
        {
            Player.transform.parent = null;
        }
    }
}

这就是我的“火车”的运作方式。它就像一辆普通的汽车,但它在轨道上滑动,每个车轮下有 2 个碰撞器。

在编辑器中训练身体图片:

使用该脚本,我的 Player 对象进入了火车的子对象,但是当火车移动时,玩家无论如何都会停留在一个地方,或者物理变得疯狂并且它会夹到它,但它的速度与火车不同,并且它滑到一个随机的地方。我认为这是因为我使用的脚本通常用于动画平台,而不是物理平台。我对统一和编码真的很陌生,所以如果有人能帮助我解决我的问题,我会非常高兴。

【问题讨论】:

  • 您应该使用嵌套刚体。我不知道你是如何移动播放器的,但你需要考虑“父母”(不要真的让它成为父母)的位置/速度:player.MovePosition(parentPosition + ...)
  • 什么是嵌套刚体?你的意思是我应该在某个对象上有刚体,而不是在那个对象里面有控制器的玩家?我试图找到有关 MovePosition 和 parentPosition 的教程,但我不确定如何使用它们以及将它们放在代码中的什么位置。我真的很新,很抱歉提出愚蠢的问题。
  • 抱歉,自动更正删除了 not ^^ 如果您应该使用嵌套刚体。嵌套我的意思是你的玩家可能有一个刚体,而且正如你描述的那样,你将玩家作为孩子添加到的火车也是一个刚体。这样的构造在 Unity 中效果不佳

标签: c# unity3d unity-editor


【解决方案1】:

如果玩家也有一个刚体,那将解释这种行为。您同时使用物理(刚体)和直接变换操作(由于重新设置)来移​​动玩家。因此,如果您在骑行过程中不需要控制玩家,您可以关闭玩家的刚体并在他/她离开时再次打开它。

【讨论】:

  • 问题是我需要在火车移动的时候走路。
  • 在这种情况下,请查看以下答案:link(对不起,我的上一个链接已损坏)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多