子物体的位置随父物体移动,但实际上并没有移动(移动平台)

4

我最近几天一直在解决这个问题,调研了很多方法,但仍然无法解决。

我有一个带有刚体的玩家和一个带有刚体的移动平台。该平台来回移动,我希望玩家能够留在上面。

当玩家跳到平台上时,平台成为其父级。这部分工作正常,没有问题。

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Moving Platform"))
    {
        transform.parent = collision.gameObject.transform;
    }
private void OnCollisionExit2D(Collision2D collision)
{
    if (collision.gameObject.CompareTag("Moving Platform"))
    {
       transform.parent = null;
    }
}

事实是,由于玩家具有动态刚体,所以似乎其父对象的移动不会影响它。我可以在检查器中看到它的位置在移动,但在游戏中它并没有真正移动。
当我将刚体类型设置为运动学时,玩家留在平台上,但是这时我找不到在上面移动的方法。所以他基本上被卡在了平台上。
这个问题有容易的解决方法吗?还是我应该完全改变制作这些可移动平台的方式。
(顺便说一下,所有的移动都是由物理引擎处理的)

你好,你能提供一下你移动玩家脚本的代码吗? - Art Zolina III
终于解决了,平台是通过物理运动的,我只是改成了transform.Translate。 - Jean-Félix Côté
请使用正确的标签…… unityscript是或者更确切来说,曾经是一种像 JavaScript 的自定义语言,被用于早期版本的 Unity 中,但现在已经被废弃了……你的代码显然是 c# - derHugo
1个回答

1

当您移动玩家时,有时即使留出小余地,它也会与碰撞分离,并产生奇怪的结果。请尝试使用Physics2d.OverlapCircle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接