281 |
С т р а н и ц а
9. Введите значения под Start Location | Distribution как показано ниже:
10. У
вас должна получиться вот такая метель:
282 |
С т р а н и ц а
11. Подвиньте камеру в положение, которое вам нравится, затем щёлкните по
опции
Thumbnail в панели меню сверху. Это сгенерирует значок/иконку для
вашей системы частиц во
вкладке Content Browser.
Щёлкая Thumbnail в панели меню сверху, генерирует мини иконку для
вашей системы частиц
283 |
С т р а н и ц а
Актор класса заклинания
Класс Spell будет наносить крайний урон всем монстрам. Ближе к концу нам нужно
содержать и систему частиц, и ограничивающий блок в классе актора Spell. Когда
класс Spell приводится аватаром, экземпляр объекта Spell будет создан в уровне и
начнёт функционировать Tick. При каждом Tick() объекта Spell на любого монстра
содержащего внутри ограничивающий объём заклинания, будет производиться
эффект этого заклинания – Spell.
Класс Spell должен выглядеть как в следующем коде:
UCLASS()
class GOLDENEGG_API ASpell : public AActor
{
GENERATED_UCLASS_BODY()
//
параллелепипед (box) определяющий объём урон
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Spell)
TSubobjectPtr
ProxBox;
//
визуализация частиц заклинания
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Spell)
TSubobjectPtr Particles;
//
Сколько урона наносит заклинание за секунду
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Spell)
float DamagePerSecond;
//
Как долго длится заклинания
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Spell)
float Duration;
// Отрезок времени, в котором заклинание живёт в уровне
float TimeAlive;
//
Настоящий насылатель заклинаний (чтобы игрок не попал
//
сам в себя)
AActor* Caster;
//
Делаем родителем этого заклинания актор насылающий заклинание
void SetCaster( AActor* caster );
//
Запускаем каждый кадр. Подменяем функцию Tick, чтобы работать с уроном
//
для чего угодно в ProxBox каждый кадр.
virtual void Tick( float DeltaSeconds ) override;
};
Есть только три функции об осуществлении которых нам стоит беспокоиться. А
именно: конструктор ASpell::ASpell(), функция ASpell::SetCaster() и функция
ASpell::Tick().
284 |
С т р а н и ц а
Откройте файл Spell.cpp. Добавьте строку, чтобы включить файл Monster.h, так что
мы сможем иметь доступ к определению объекта Monster в файле Spell.cpp, как
показано в следующей строке кода:
#include "Monster.h"
Сначала конструктор, который устанавливает заклинание и инициализирует все
компоненты показанные в следующем коде:
ASpell::ASpell(const class FPostConstructInitializeProperties& PCIP) :
Super(PCIP)
{
ProxBox = PCIP.CreateDefaultSubobject
(this, TEXT("ProxBox"));
Достарыңызбен бөлісу: