C# 在尝试使用墙壁跳转C从墙壁上弹起时出现问题#

C# 在尝试使用墙壁跳转C从墙壁上弹起时出现问题#,c#,unity3d,2d,unity3d-2dtools,C#,Unity3d,2d,Unity3d 2dtools,这是我的墙壁跳跃,效果很好,我甚至可以让角色在使用SetHorizontalForce(10)从左侧墙壁上跳下时从墙壁上稍微反弹回来。所以我遇到的问题是当我把SetHorizontalForce(-10)放进去时要从右侧墙壁反弹,它使角色无法再爬上墙壁,而是从墙壁反弹回来,但不会获得更多的高度。这是SetHorizontalForce(-10)以某种方式影响角色的y轴?还是完全发生了别的事情 public void WallJump() { if (State.HasCollisi

这是我的墙壁跳跃,效果很好,我甚至可以让角色在使用
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;
    }
}
编辑:我被要求包含我的SetHorizontalForce,所以它是:

private Vector2 _velocity;

    public void SetHorizontalForce(float x)
    {
    _velocity.x = x;
    }
EDIT2:这就是我的速度处理方式。

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

所以你想知道,如果我正确理解了这个问题,为什么它不再上升了

我没有看到你在垂直方向上加了一个力。如果你想让它们继续向上爬,那么你需要让它们在水平方向和垂直方向上移动,以使它们保持向上的墙壁跳跃,否则,它们只使用初始跳跃力,一旦到达顶点,它们就会开始越来越多地下降


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

奇怪,我在文档中找不到SetHorizontalForce。那是你自己卷的东西吗?如果是这样的话,那么你能包括它吗?@Terrance嘿,伙计,我已经包括了我的SetHorizontalForce,如果还需要什么,请随时询问。谢谢你看。如果你也给我看全班的其他同学也会有帮助的。你是否在某处将_velocity设置为游戏对象的实际速度?您是否在FixedUpdate或Update中调用Wall Jump或其他方法\co例程?@Terrance添加了我的_velocityOh,这样您就不会使用unity2d刚体物理了?你在玩你自己的物理吗?