通过刚体控制角色移动跳跃,某些情况下不会掉下来

如图所示,当人物跳起来时长按方向键,人物会停靠在空中,松开按钮才会掉下来。
是不是我写的代码有问题?

动画3

这是我控制人物的代码:

  update(dt) {
    const v = this.rigidbody.linearVelocity;
    if (this.leftLongPress) {
      v.x = -200 * 150 * dt;
    } else if (this.rightLongPress) {
      v.x = 200 * 150 * dt;
    } else {
      v.x = 0;
    }
    this.rigidbody.linearVelocity = v;
  }

  jump() {
    const v = this.rigidbody.linearVelocity;
    v.y = 800;
    this.rigidbody.linearVelocity = v;
  }

你的空中平台是做了单向碰撞吗,会不会是这里的计算有问题呢?

看起来是从下往上没问题,从上往右下有问题。

线性速度是会收到力的影响的吧,下落的重力和右侧的线性力,会不会抵消了?

没有做单向碰撞

有可能是这个问题,但我不知道该如何解决

人物右侧如果有障碍物,右侧力又特别大的话,是会导致大于重力,然后停在障碍物边。

的确是这个问题,我把人物重力调成 20,y 的线性速度改为 1500 ,就不会发生悬停了。
但这样的话跳跃的动作又变快了

把摩檫系数设置为 0 暂时解决了,不知道还有没有更好的方案

设置为0你碰到板子会滑得…

确实碰到倾斜的板子会滑下来 :rofl:

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。