【问题标题】:Object Sticks To The Floor When It Moves [closed]物体移动时粘在地板上[关闭]
【发布时间】:2020-08-31 05:02:51
【问题描述】:

当物体上下移动时,有时它会卡在地板上。这是什么原因?我正在使用 RigidBody2D 和我在 FixedUpdate() 方法中的代码,我也使用了盒子对撞机。

我的意思是当我开始游戏几次时,它有时会发生,有时不会。如果您能提供帮助,我将非常高兴。提前致谢。 所以让我更详细地解释一下我想更详细地告诉你什么,我想在代码的帮助下上下移动障碍物,也就是说,当障碍物接触到每一层地板或天花板时,它们会改变方向,并且它们上下移动,也就是说,当它们碰到每个天花板或地板时,它们的方向就会改变。但有时当它们需要改变方向时,障碍物会粘在天花板或地板上

【问题讨论】:

  • 请将代码的相关部分放入问题中,以帮助人们了解可能出现的问题。如果您录制了视频并添加了链接,这也会有所帮助。目前的问题是很难弄清楚你的意思。
  • 我编辑了这个问题,你能帮忙吗

标签: unity3d game-development rigid-bodies


【解决方案1】:

我只是为每个游戏对象创建一个固定点来改变方向,而不是检查与刚体的碰撞。

void FixedUpdate() {
    if(obstacle.transform.position.y + obstacle.transform.localScale.y > 
    upperPointOfReturn) 
    {
        obstacle.ChangeDirection();
    }

    if(obstacle.transform.position.y - obstacle.transform.localScale.y < 
    lowerPointOfReturn) 
    {
        obstacle.ChangeDirection();
    }

    obstacle.transform.position = new Vector2(
    obstacle.transform.position.y 
    + velocity* Time.deltaTime * direction, 0
    );
   
}

void ChangeDirection() {
    direction *= -1;
}

【讨论】:

  • 非常感谢,我认为这会有所帮助,但 *velocity 是我的刚体速度对
  • 上面的代码只是一个例子,你如何在没有刚体的情况下实现移动物体。如果您提供更多信息,我可以为您制定更好的代码解决方案。如果您的对象向右移动,只需将 y 替换为 x。但请确保您当地的比例是正确的。 (物体的长边必须是局部比例)
【解决方案2】:

创建一个 Physics Material 2D,摩擦力和弹性为 0,并附加到玩家的碰撞器。

【讨论】:

  • 感谢您的回答,但我已经这样做了,但没有工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
相关资源
最近更新 更多