如何在“跳转”方法中使用布尔值?

时间:2019-07-28 18:23:51

标签: c# unity3d

我为rpg制作了一个跳跃系统。 ->检测播放器何时接地的问题。

我试图使系统返回布尔值,并将if方法添加到跳转方法中,不幸的是我被卡住了

bool isGrounded () 
{
    return Physics.Raycast(transform.position, Vector3.down, distToGround);
}

//jump Force
if(Input.GetButton("Jump"))
{
    if(isGrounded == true) 
    {
        GetComponent<Rigidbody>().AddForce (Vector3.up * 100);
    }
}

错误消息在这里。

  

bool isGrounded()
  运算符'=='不适用于'方法组'和'布尔'类型的操作数(CS0019)[Assembly-CSharp]

1 个答案:

答案 0 :(得分:2)

将其添加为答案,以便直到时间结束后才出现在未回答的问题列表上

bool isGrounded () 
{
    return Physics.Raycast(transform.position, Vector3.down, distToGround);
}

//jump Force
if(Input.GetButton("Jump"))
{
    if(isGrounded == true) 
    {
        GetComponent<Rigidbody>().AddForce (Vector3.up * 100);
    }
}

if(isGrounded == true)

告诉编译器找到一个名为isGrounded的符号,并将其值与true进行比较。由于isGrounded是一种方法,而不是布尔属性或字段,因此,您基本上是在要求编译器将isGrounded()true的地址进行比较,这完全是零的意义(即使它在C#中被允许,但事实并非如此)。

如果将其更改为

if(isGrounded() == true) 

或更简洁地

if(isGrounded()) 

它将调用isGrounded()并测试返回值。

身体感觉很重要。