Я пытаюсь сделать функцию, которая возвращает true, если игровой объект сталкивается с чем-либо, имеющим тег «Ground», однако return подчеркивается текстом «Поскольку PlayerController.PlayerController (Collision2d)» возвращает void, ключевое слово return должно не должно сопровождаться выражением объекта ". Какие изменения мне нужно сделать?

private CanJump(Collision2D collision)
{
    if (collision.gameObject.tag == "Groumd") ;
    {
        return true;
    }
}
-1
Pom 27 Май 2019 в 22:46

2 ответа

Лучший ответ

Во-первых, вам понадобится тип возврата bool для вашего метода, а также возврат по умолчанию false где-то:

private bool CanJump(Collision2D collision)
{
    if(collision.gameObject.tag == "Groumd") ;
    {
        return true;
    }

    return false;
}

Что вы можете сократить, чтобы просто сделать

private bool CanJump(Collision2D collision)
{
    return collision.gameObject.tag == "Groumd";
}

Однако .. для такого одного лайнера метод, вероятно, является вопросом вкуса, но почему бы не напрямую в методе, где вы вызываете это использование

collision.gameObject.tag == "Groumd"

Вместо этого

CanJump(collision)
1
derHugo 27 Май 2019 в 19:56

Похоже, у вас есть закрытая функция, которая по умолчанию может иметь тип возврата void? Присвойте ему тип возвращаемого значения типа bool или что-то в этом роде, а затем, где бы вы ни вызывали функцию, проверяйте, верен ли ее результат, чтобы узнать, есть ли столкновение или нет.

1
krsw21 27 Май 2019 в 19:53