Подбираемые предметы
Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 17 из 71.
Подбираемый предмет — это триггер со собственным скриптом. Когда в него что-то входит, предмет проверяет, что это игрок, передаёт ему свой эффект и уничтожает себя. Скрипт игрока хранит результат и предоставляет для этого публичный метод. Этот аптечный набор лечит любой объект, у которого есть скрипт Health:
// HealthPack.cs
public int amount = 25;
void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out Health health) && health.hp < 100)
{
health.Heal(amount);
Destroy(gameObject);
}
}// Health.cs, на игроке
public int hp = 50;
public void Heal(int amount)
{
hp = Mathf.Min(hp + amount, 100);
Debug.Log("HP: " + hp);
}other.TryGetComponent(out Health health) возвращает false, если в аптечный набор врезается скользящий ящик, поэтому подобрать его может только объект со скриптом Health, а игрок с полным запасом здоровья оставляет набор на потом. Набор находит игрока через other, поэтому для него не нужна ссылка из Inspector, и на уровне может быть пятьдесят таких наборов. Heal — public, потому что его вызывает другой скрипт, а ограничение в 100 задано в Health — единственном месте, где хранится hp. Destroy(gameObject) удаляет аптечный набор; Destroy(other.gameObject) удалил бы игрока.
Задание
ЛегкоСделай так, чтобы ящики с патронами пополняли боезапас бластера (ammo 4, maxAmmo 10).
- В
Blaster.csдобавьpublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, прибавь это значение кammo, выведи в лог"Ammo: " + ammoи верниtaken. - В
AmmoCrate.cs, еслиother.TryGetComponent(out Blaster blaster), вызовиblaster.AddAmmo(amount);иDestroy(gameObject);.
Нажми «Играть» и иди направо: в Console появится Ammo: 7, а затем Ammo: 10. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// Blaster игрока забирает боеприпасы, а ящик исчезает
}
}
Все уроки раздела Физика и игровой процесс
1Твёрдое тело
Гравитация и массаТолкаем с помощью AddForceПрыжок с импульсомFixedUpdate для физикиСкоростьКинематические телаПовторение: пусковая площадка4Корутины
InvokeInvokeRepeating, CancelInvokeВаша первая корутинаЦиклы в корутинахОстановка корутинПовторение: обратный отсчёт10Проект: Побег с арены
АренаОхотники2Столкновения
OnCollisionEnterВо что я попал?Разрушение при столкновенииСтояние на землеОтскок и трениеФормы коллайдеровПовторение: разрушаемая стена5Проект: Монетная гонка
Катящийся шарСобираем монетыПотренируйтесь самостоятельно: Песочница Unity