unity3d 将角色设置为移动平台的父对象时,角色移动缓慢

1mrurvl1  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(164)

我正在Unity中开发一款2D平台游戏。我的角色通过对刚体施加速度来移动,并且按照我的要求进行精确的控制。
当角色位于移动平台上时,我将角色设置为移动平台的父对象,以便在平台移动时角色保持在移动平台上。

private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            collision.collider.transform.SetParent(transform);
        }
    }
    
    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            collision.collider.transform.SetParent(null);
        }
    }

我还使用transform.position从一个位置移动到另一个位置。
问题是这样的。只有当平台的速度为0时,角色才能完美地工作。如果平台在移动,角色在平台上行走时会像鼻涕虫一样移动。有什么想法可以解决这个问题吗?或者有没有一种方法可以让角色在移动的平台上骑行,而无需将其作为父对象?
编辑:我之前忘记加入这个了。我已经测试过物理材质是否会有不同。我在角色、平台以及两者同时加入了0摩擦物理材质。没有一个组合产生任何差异。当平台移动时,玩家仍然移动缓慢。

1u4esq0p

1u4esq0p1#

如果你用一个力和一个刚体来移动你的角色,层次和谁是父不会有太大的影响,因为移动是由力提供的,这是物理学。如果你在代码中操纵变换来移动,这将是重要的,但如果运动是由力引起的,我认为不是。我会检查球员和平台的物理材料的摩擦,以确定元素的运动相互尊重。

xqnpmsa8

xqnpmsa82#

答案还需要一段时间,但我想我找到了一个。将平台移到FixedUpdate而不是Update可以解决这个问题。

相关问题