【问题标题】:Child position is moving along with parent, but not actually moving (moving platform)子位置与父位置一起移动,但实际上并未移动(移动平台)
【发布时间】:2021-03-22 19:39:06
【问题描述】:

所以过去几天我一直坚持这一点,研究并尝试了很多东西,但仍然无法弄清楚。

我有一个带有刚体的播放器和一个带有刚体的移动平台。平台在来回移动,我希望玩家在他打开时留在上面。

所以当玩家跳上平台时,平台就成为它的父平台。这工作正常,没有问题。

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;
    }
}

问题是,由于玩家有一个动态刚体,看起来它的父级的移动不会影响他。我可以看到他在检查员中的位置在移动,但在游戏中并没有真正移动。

当我将身体类型设置为运动学时,玩家会停留在平台上,但我无法找到在平台上实际移动的方法。所以他基本上卡在了平台上。

有没有简单的解决方法?或者我应该完全改变我制作这些移动平台的方式。

(顺便说一句,每个动作都用物理处理)

【问题讨论】:

  • 你好,你能提供你的移动播放器脚本的代码吗?
  • 终于修好了,平台随着物理而移动,我只是将其更改为 transform.Translate
  • 请使用正确的标签...unityscript 是或更好 曾经是一种 JavaScript 风格,类似于早期 Unity 版本中使用的自定义语言,现在早已弃用...你的代码显然是c#

标签: c# unity3d


【解决方案1】:

当您移动播放器时,有时它会从碰撞中分离,即使边距很小,也会产生奇怪的结果。试试Physics2d.OverlapCircle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2015-05-09
    • 2012-04-20
    • 2016-10-28
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多