C# 我如何使用";中的布尔值;“跳跃”;方法?

C# 我如何使用";中的布尔值;“跳跃”;方法?,c#,unity3d,C#,Unity3d,我为我的rpg制作了一个跳跃系统。-->检测球员何时接地的问题 我曾试图让系统返回布尔值,并将它与if方法一起添加到jump方法中,不幸的是,我被卡住了 bool isGrounded () { return Physics.Raycast(transform.position, Vector3.down, distToGround); } //jump Force if(Input.GetButton("Jump")) { if(isGrounded == true)

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

我曾试图让系统返回布尔值,并将它与if方法一起添加到jump方法中,不幸的是,我被卡住了

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已接地()
{
返回Physics.Raycast(transform.position,Vector3.down,distToGround);
}
//跳跃力
if(Input.GetButton(“跳转”))
{
如果(isGrounded==真)
{
GetComponent().AddForce(Vector3.up*100);
}
}
此处显示错误消息

bool isGrounded()
运算符“==”不能应用于“方法组”和“bool”(CS0019)[程序集CSharp]类型的操作数

将此添加为答案,以便在时间结束前不会出现在未回答的问题列表中

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

如果您将此更改为

if(isGrounded() == true) 
或者更简洁地说

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


括号很重要

如果(isground)将条件计算为布尔值,并且如果正确命名这些条件,则无需额外检查,则可以将检查缩短为
。然而,在您的情况下,名称似乎有歧义。显然有一个名为“isground”的“methodgroup”类型的变量,以及布尔值。因此,编译器真的很困惑,为什么要将方法组与
==true
进行比较,只需将
()
添加到
isGrounded
之后,因为您将其定义为方法。或者将其转换为类似于
boolisgrounded{get{return Physics.Raycast(transform.position,Vector3.down,distToGround);}}
的属性。顺便说一句,避免多次调用
GetComponent
,而是将其存储一次,并在(isground()==true)
的情况下重新使用引用。
isground()
上缺少括号。
形式的错误消息不能应用于“method group”类型的操作数,…
通常涉及缺少方法调用所需参数的代码。例如,请参见标记的重复项。
if(isGrounded() == true) 
if(isGrounded())