用精灵进行Unity 2D攀爬

时间:2018-11-02 13:03:20

标签: unity3d

好的,我开始变得更好一些。我正在尝试爬山

我的代码可以识别我何时在墙壁上,并且可以使他攀爬,但是我可以通过关闭重力标尺或在墙壁为真时将其设置为0来做到这一点

然后在离开墙壁时将其恢复为原始设置。...

它似乎不正确...

我的意思是它会上升,然后当距离超过条件时,重力比例会返回到原始设置,但是如果我放开移动操纵杆,除非再次重置重力比例,它将继续升高,甚至仍然像addforce一样比翻译...我还是团结的新手,所以我不确定我在寻找什么

我需要的是,如果移动操纵杆始终使用其垂直值向上移动,而不是向上移动(如果移动操纵杆为0,则比在墙上暂停并停留在该点处,如果向下移动,则他可以向下爬升)

这是我的3个功能

private void OnCollisionEnter2D(Collision2D col) {

    if (col.gameObject.tag == "climbable") {
        is_on_wall = true;
        currentWall = col.gameObject.transform;
        currentWallCollider = col.collider;
    }
}


private bool found_wall() {

    if (currentWall) {
        if (Physics2D.Distance (currentWallCollider, heroCollider).distance < 10) {
            rb.gravityScale = 0;
            return true;
        } else {
            rb.gravityScale = 25;
        }
    }
    return false;
}

private void climb()  {
    if (vertical > 0.5f) {
        transform.Translate (0, 1f, 0);
    } else if (vertical < -0.5f) {
        transform.Translate (0, -1f, 0);
    } else {
        transform.Translate (0, 0, 0);
    }
}


private void FixedUpdate() {

    if (can_jump()) {
        rb.AddForce (new Vector2 (0, jumpHeight));
    }

    if (found_wall ()) {
        climb ();
    }
}

它们在固定更新中被称为

请帮助取消迷惑

0 个答案:

没有答案