【发布时间】:2021-10-21 14:36:31
【问题描述】:
public void MoveCharacter(float directionHori) //either -1 or 1
{
direction = new Vector2 (directionHori, 0); //new vector2 using passed x value (1 or -1). //BUG - passing in 0 as Y axis overrides gravity while player is moving.
rb.MovePosition(rb.position + direction * moveSpeed * Time.fixedDeltaTime); //apply movement
}
上面是我的 MoveCharacter 方法,当它被调用时,Y 轴被 0 覆盖,因此重力被禁用,允许玩家在应该跌倒时飞行。这是一个 2D 横向卷轴,因此玩家不应该能够垂直移动(当然下降时除外)。我试过 direction = new Vector2 (directionHori, rb.Velocity.y); //用rb.Velocity替换0
然而,这会产生更奇怪的行为。任何帮助将不胜感激,我还是 Unity 的新手!非常感谢。
【问题讨论】:
标签: c# unity3d velocity gravity