【发布时间】: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