Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!



Pdf көрінісі
бет241/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   237   238   239   240   241   242   243   244   ...   252
Байланысты:
аа

Over LifeВыберите Location | Initial Location


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")); 

Достарыңызбен бөлісу:
1   ...   237   238   239   240   241   242   243   244   ...   252




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет