移动时物体会粘在地板上

问题描述

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

我的意思是,当我几次玩游戏时,它有时会发生,有时却不会。如果您能帮助我,我将非常高兴。提前致谢。 因此,让我更详细地说明我想告诉您的内容,我想借助代码上下移动障碍物,也就是说,障碍物在碰到每个地板或天花板时会改变方向,并且它们会上下移动,也就是说,当它们碰到每个天花板或地板时,它们的方向会改变。但是有时障碍物会在需要改变方向时粘在天花板或地板上

enter image description here

解决方法

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

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

创建摩擦力为0且弹跳度为0的 2D物理材料,并将其附加到玩家的对撞机上。