227 |
С т р а н и ц а
Переменная типа float для AttackTimeout, что является объёмом времени, на
который монстр прерывается между атаками.
Два объекта USphereComponents: Один из них это SightSphere – как далеко
он может видеть. Другой это AttackRangeSphere – как далеко могут достигать
его атаки. Объект AttackRangeSphere всегда меньше чем SightSphre.
Выполните проиcхождение от класса Character, чтобы создать ваш класс Monster. В
UE4 вы можете сделать это перейдя в
File |
Add Code To Project… и затем выбрав
опцию
Character в меню для вашего базового класса.
Заполните класс Monster базовыми свойствами. Убедитесь, что вы объявляете
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties), так что
свойства монстров могут быть изменены в блупринтах:
UCLASS()
class GOLDENEGG_API AMonster : public ACharacter
{
GENERATED_UCLASS_BODY()
//
Насколько он быстр
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
float Speed;
//
Единицы здоровья монстра
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
float HitPoints;
//
Опыт получаемый от побед
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
int32 Experience;
// Blueprint
типа предмета обронённого монстром
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
UClass* BPLoot;
//
Объём
урона получаемого от атаки
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
float BaseAttackDamage;
//
Объём времени, необходимый монстру для отдыха
//
между атаками
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = MonsterProperties)
float AttackTimeout;
//
Время с последнего удара монстра, читаемое в blueprint
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = MonsterProperties)
float TimeSinceLastStrike;
//
Расстояние на котором он
видит
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Collision)
USphereComponent* SightSphere;
//
Дальность его атаки. Визуализируемая в редакторе как сфера
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Collision)
228 |
С т р а н и ц а
USphereComponent* AttackRangeSphere;
};
Вам понадобится минимальный код в вашем конструкторе Monster, чтобы задать
свойства монстра. Используйте следующий код в файле Monster.cpp:
AMonster::AMonster(const class FObjectInitializer& PCIP) : Super(PCIP)
{
Speed = 20; //
Скорость
HitPoints = 20; //
Здоровье
Experience = 0; //
Опыт
BPLoot = NULL; //
Трофеи
BaseAttackDamage = 1; //
Урон базовой атаки
AttackTimeout = 1.5f; //
Длительность атаки
TimeSinceLastStrike = 0;
// Прошло времени с последнего удара
SightSphere = PCIP.CreateDefaultSubobject
(this,
TEXT("SightSphere"));
SightSphere->AttachTo( RootComponent );
AttackRangeSphere = PCIP.CreateDefaultSubobject (this,
TEXT("AttackRangeSphere"));
AttackRangeSphere->AttachTo( RootComponent );
}
Компилируйте и запустите код. Отройте Unreal Editor и выполните происхождение
блупринт основанного на вашем классе Monster (назовите его BP_Monster). Теперь
мы можем начать конфигурировать свойства ваших монстров.
Для скелетной сетки мы хотим использовать модель HeroTPP для монстра, потому
что нам нужно, чтобы монстр мог выполнять рукопашную атаку, а HeroTPP не идёт
с рукопашной атакой. Однако некоторые модели в файле Maximo Animation Pack
обладают анимацией рукопашной атаки. Итак, скачайте файл Maximo Animation
Достарыңызбен бөлісу: