Invoke
Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 22 из 71.
Invoke("Explode", 3f) вызывает собственный метод скрипта Explode один раз через 3 секунды, а выполнение следующего за ним кода продолжается сразу. Unity находит метод по его имени, переданному в виде строки, и метод не принимает параметров. Эта бомба взрывается через 3 секунды после начала игры:
void Start()
{
Invoke("Explode", 3f);
}
void Explode()
{
Debug.Log("Boom");
Destroy(gameObject);
}Поскольку имя — это строка, компилятор не может его проверить. Invoke("Explod", 3f) компилируется, а через 3 секунды Unity выводит сообщение Trying to Invoke method: Bomb.Explod couldn't be called. вместо взрыва. В C# эту проблему решает nameof: nameof(Explode) — это строка "Explode", созданная компилятором на основе проверенного им имени, поэтому опечатка в ней приводит к ошибке компиляции, которую вы увидите до запуска игры. Напишите Invoke(nameof(Explode), 3f);.
Задание
ЛегкоСделай так, чтобы платформа рассыпалась через мгновение после приземления игрока на неё.
- В
OnCollisionEnter, когдаcollision.gameObject.CompareTag("Player"), вызовиInvoke(nameof(Fall), delay);. - Добавь
void Fall(): установиbody.isKinematic = false;и выведи в журналCrumble!.
Нажми «Играть» и пройдись по платформе: через секунду она упадёт. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class Crumble : MonoBehaviour
{
public float delay = 1f;
Rigidbody body;
void Start()
{
body = GetComponent<Rigidbody>();
}
void OnCollisionEnter(Collision collision)
{
// Когда игрок приземлится: сделайте так, чтобы платформа упала через delay секунд
}
// Fall(): включите физику платформы и выведите Crumble! в лог
}
Все уроки раздела Физика и игровой процесс
1Твёрдое тело
Гравитация и массаТолкаем с помощью AddForceПрыжок с импульсомFixedUpdate для физикиСкоростьКинематические телаПовторение: пусковая площадка4Корутины
InvokeInvokeRepeating, CancelInvokeВаша первая корутинаЦиклы в корутинахОстановка корутинПовторение: обратный отсчёт10Проект: Побег с арены
АренаОхотники2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Монетная гонка
Катящийся шарСобираем монетыПотренируйтесь самостоятельно: Песочница Unity