我的角色不会攀登,只会跌落在统一2D中

时间:2019-01-11 23:34:57

标签: c# unity3d

我对Unity和C#非常陌生 我一直试图让我的角色爬上梯子几个小时,并尝试了20多种不同的脚本,但没有任何效果。我将脚本放在梯子周围的对撞机上(梯子是瓷砖的一部分)重新放置梯子并在其周围放置对撞机的瓦片,但角色没有掉下来(我已将对撞机作为触发器)再次使用,这是我发现很多人都喜欢的代码,但似乎并不适用我 这是阶梯代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ladder : MonoBehaviour
{

    GameObject playerOBJ;
    bool canClimb = false;
    float speed = 1;

    void OnCollisionEnter(Collision coll)
    {
        if (coll.gameObject.tag == "Player")
        {
            canClimb = true;
            playerOBJ = coll.gameObject;
        }
    }

    void OnCollisionExit(Collision coll2)
    {
        if (coll2.gameObject.tag == "Player")
        {
            canClimb = false;
            playerOBJ = null;
        }
    }
    void Update()
    {
        if (canClimb)
        {
            if (Input.GetKey(KeyCode.W))
            {
                playerOBJ.transform.Translate(new Vector3(0, 1, 0) * Time.deltaTime * speed);
            }
            if (Input.GetKey(KeyCode.S))
            {
                playerOBJ.transform.Translate(new Vector3(0, -1, 0) * Time.deltaTime * speed);
            }
        }
    }
}'

1 个答案:

答案 0 :(得分:0)

您需要在攀爬时禁用角色刚体上的重力,否则重力将始终使您的角色坠落。

您可以像这样访问角色刚体:

playerRB = playerOBJ.GetComponent<Rigidbody2D>();

您可以将重力更改为0:

playerRB.gravityScale = 0;,并在需要时返回1。

例如,当您的角色碰到梯子对撞机时就禁用重力,而当您按“ A”或“ D”使角色从梯子上跌落时启用重力。