#c# #unity3d
#c# #unity3d
Вопрос:
Здравствуйте, я создал скрипт для перехода через стену, но функция Invoke() не работает, я получаю сообщение об ошибке «Попытка вызвать метод: KarakterKontrol.Не удалось вызвать DuvarZiplamasiniBoz. «
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space) amp;amp; IsSliding == true)
{
WallJump = true;
Invoke("DuvarZiplamasiniBoz", WallJumpTime);
}
if(DuvarZiplamasi == true)
{
karakterRB.velocity = new Vector2(xWallForce * -input, yWallForce);
}
void DuvarZiplamasiniBoz()
{
WallJump = false;
}
Комментарии:
1. Компилируется ли это вообще?
2. Ха, ты только что кое-что мне объяснил. Я никогда не знал, что вы можете создавать локальные методы внутри метода.
3. Почему вы хотите вызвать () метод DuvarZiplamasiniBoz? Вы можете просто вызвать его так, как DuvarZiplamasiniBoz() . Если вы хотите передать параметр WallJumpTime, вы должны объявить это примерно так: DuvarZiplamasiniBoz(<тип WallJumpTime> wallJumpTime) { … Если тип — DateTime, то это будет DuvarZiplamasiniBoz(DateTime wallJumpTime).
Ответ №1:
Поместите void DuvarZiplamasiniBoz вне метода обновления. вот почему вы не можете вызвать метод.
сделайте это так:
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space) amp;amp; IsSliding == true)
{
WallJump = true;
Invoke("DuvarZiplamasiniBoz", WallJumpTime);
}
if(DuvarZiplamasi == true)
{
karakterRB.velocity = new Vector2(xWallForce * -input, yWallForce);
}
}
private void DuvarZiplamasiniBoz()
{
WallJump = false;
}
или используйте сопрограмму, чтобы подождать несколько секунд.