Invoke
Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 21 из 63.
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. вместо взрыва. nameof в C# решает эту проблему: nameof(Explode) — это строка "Explode", созданная компилятором из имени, которое он проверил, поэтому опечатка в ней приведёт к ошибке компиляции, которую вы увидите до запуска игры. Напишите Invoke(nameof(Explode), 3f);.
Задание
ЛегкоПлатформа между двумя уступами разрушается. Её Rigidbody кинематический, поэтому она висит в воздухе. Напиши скрипт Crumble для неё:
- Когда игрок приземляется на неё, она ждёт
delayсекунд (1 в Inspector), а затем падает. - Падение выполняет метод с именем
Fall: он включает физику платформы (isKinematic = false) и выводит в журналCrumble!. - Пока игрок её не коснулся, платформа остаётся на месте.
Используй nameof для имени метода. Нажми Play и пройди по платформе с помощью стрелок, затем нажми Check.
Попробуйте сами
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 для физикиСкоростьКинематические телаПовторение: пусковая площадка2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Погоня за монетами
Катящийся мячМонеты для сбора