在统一2D中实施梯子

时间:2014-09-16 11:05:53

标签: c# unity3d 2d

我正在努力实现统一的爬梯功能,并且我已经在某种程度上实现了它。我已经在角色头部的顶部放置了圆形对撞机,因此它可以检测到梯子在他头顶的时间。我想要做的是,如果我按下向上键,它只爬上梯子的一步并停留在那里。但是,一旦我停止按下向上键,角色就会下降,如果我按下它一次就会继续上升..我已经搞砸了刚体的引力,但没有运气。

void Update()
{
    if((isgrounded  || !doublejump) && Input.GetKey(KeyCode.Space) )
    {
        anim.SetBool( "Ground",false);
        rigidbody2D.AddForce(new Vector2(0,jumpforce));
        if(!doublejump && !isgrounded)
            doublejump = true;
    }
    if(Ladder && Input.GetAxis("Vertical")>0)
    {
        rigidbody2D.gravityScale =0;
        rigidbody2D.velocity = new Vector2(rigidbody2D.velocity.x,Input.GetAxis("Vertical")*maxspeed);
    }
    if(!Ladder)
    {
        rigidbody2D.gravityScale =1;
    }

}

1 个答案:

答案 0 :(得分:2)

解决了它。有人想知道这是答案。

void Update()
{
    if((isgrounded  || !doublejump) && Input.GetKey(KeyCode.Space) )
    {
        anim.SetBool( "Ground",false);
        rigidbody2D.AddForce(new Vector2(0,jumpforce));
        if(!doublejump && !isgrounded)
            doublejump = true;
    }
    if(Ladder && Input.GetAxis("Vertical")>0)
    {

        anim.SetBool("LadderUp",true);
        transform.Translate (new Vector2(0,0.2f) * Time.deltaTime*maxspeed);
        rigidbody2D.gravityScale =0;
    //  rigidbody2D.velocity = new Vector2(rigidbody2D.velocity.x,Input.GetAxis("Vertical")*maxspeed);
    }
    if(!Ladder)
    {
        anim.SetBool("LadderUp",false);
        rigidbody2D.gravityScale =1;
    }

}