站在移动平台上无法移动

Standing on moving platform disables movement

在我的游戏中,我有由 Vector3.moveTowards 控制的移动平台。他们工作得很好 我有一个播放器脚本,它有这样的控件:

void Update()
    {
        var movement = Input.GetAxis("Horizontal");
        rigidBody.position += new Vector2(movement, 0) * movementSpeed * Time.deltaTime;
    }

这当然不是玩家控制的所有内容,但没有其他任何东西可以改变 position/collider/rigidbody。我有什么工作得很好 问题是当我跳上平台时,播放器会随着平台移动,但不能自行移动 我需要跳跃才能再次移动,只能在空中和不动的地面上

private void OnCollisionEnter2D(Collision2D collision)
    {
        collision.transform.SetParent(transform);
    }
 
    private void OnCollisionExit2D(Collision2D collision)
    {
        collision.transform.SetParent(null);
    }

我尝试使用 addforce 和 movePosition 进行移动,但得到了与我现在遇到的问题类似的结果,但它也发生在不动的地面上 下面是本题相关的平台刚体组件和播放器组件

如果跳转很重要,那么这是它的脚本

void Jump()
{
    rigidBody.velocity = new Vector2(rigidBody.velocity.x, 0);
    rigidBody.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
    Debug.Log("jump");
}

enter image description here enter image description here

我完全使用您在此处发布的那些脚本重新构建了您的设置,但一切似乎对我来说都很好。我的猜测是当您设置父对象时出现问题。由于您的触发器和碰撞设置看起来一切正常,我建议如下:

  • 尝试以速度而不是位置来操纵左右移动,因为这似乎是我现在可以看到的跳跃和移动之间唯一可见的区别。
  • 会不会是您在平台上尝试移动时抓取了错误的刚体组件? (比如你抢的是平台之一,而不是玩家之一?)

希望对您有所帮助! (我会把它作为评论发布,但我还没有足够的代表)