Unity 2D:当我按某个键时,改变我的播放器的重力比例?

时间:2017-11-30 01:18:56

标签: c# unity3d

我对团结和C#相当陌生,而且当我按下空格键时,我试图了解如何改变角色的重力比例。当我调试它时,它表示Rigidbody2D.gravityScale不能用作方法。有人可以解释为什么它会带来这个错误以及如何解决它?

public class PlayerMovement : MonoBehaviour {

    public float moveSpeed;
    private Rigidbody2D rb2d;
    public float addGrav;

    // Use this for initialization
    void Start () {
        rb2d = GetComponent<Rigidbody2D> ();
    }

    // Update is called once per frame
    void Update () {

        //Understanding::: If key pressed down, 
        //Transform - method that manipulates position of object
        //Translate moves transform in direction/distance of translation.
        //transform.Translate(translation);
        if (Input.GetKey (KeyCode.UpArrow)) 
        {
            transform.Translate (Vector2.up * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey (KeyCode.DownArrow)) 
        {
            transform.Translate (Vector2.down * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey (KeyCode.LeftArrow)) 
        {
            transform.Translate (Vector2.left * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey (KeyCode.RightArrow)) 
        {
            transform.Translate (Vector2.right * moveSpeed * Time.deltaTime);
        }

        if(Input.GetKey (KeyCode.Space))
        {
            rb2d.gravityScale (addGrav);
        }
    }
}

2 个答案:

答案 0 :(得分:3)

rb2d.gravityScale不是一种方法,它是一个可以为其赋值的字段。

使用此

rb2d.gravityScale = addGrav; //to asign
//other example
rb2d.gravityScale += addGrav; //to add
rb2d.gravityScale -= addGrav; //to substract

答案 1 :(得分:2)

这是因为编译器将其作为方法读取,因为您使用了括号而不是等号。它应该是这样的。

  

rb2d.gravityScale = addGrav;