1

所以这是我的墙跳,效果很好,我什至可以让角色在从左墙跳下时稍微从墙上反弹SetHorizontalForce (10);。所以我遇到的问题是,当我SetHorizontalForce (-10);从右边的墙上反弹时,它使角色不能再爬上墙壁,而是从墙上反弹回来,但没有增加任何高度。这SetHorizontalForce (-10);会以某种方式影响角色的 y 轴吗?还是完全发生了其他事情?

public void WallJump()
{   
    if (State.HasCollisions) {
        AddForce (new Vector2 (0, Parameters.JumpMagnitude));
        _jumpIn = Parameters.JumpFrequency;
    }
    if (State.IsColidingLeft) {
        SetHorizontalForce (10);
        _dashIn = Para.DashFrequency;
    }
    else if (State.IsColidingRight){
        SetHorizontalForce (-10);
        _dashIn = Para.DashFrequency;
    }
}

编辑:我被要求包括我的 SetHorizo​​ntalForce,所以这里是:

private Vector2 _velocity;

    public void SetHorizontalForce(float x)
    {
    _velocity.x = x;
    }

EDIT2:这就是我的 _velocity 的处理方式。

public void AddForce(Vector2 force)
{
    _velocity = force;
}
public void SetForce(Vector2 force)
{
    _velocity += force;
}
public void SetHorizontalForce(float x)
{
    _velocity.x = x;
}
public void SetVerticalForce(float y)
{
    _velocity.y = y;
}
4

1 回答 1

0

因此,您想知道如果我正确理解了问题,为什么它不再上升。

我没有看到您实际上在垂直方向上添加了力。如果你想让他们继续向上攀爬,那么你需要让他们在水平方向和垂直方向上发送,以使他们保持向上的墙壁跳跃,否则,他们只是使用初始跳跃力,并且一次到了顶点,它们就会开始越来越多地掉下来。

如果您需要更多解释,请告诉我,但是是的,也可以在其中添加一些垂直跳转,看看是否能解决您的问题。

于 2014-11-05T22:42:24.907 回答