Отбрасывание игрока
Чтобы добавить игроку отбрасывание, я добавил переменную член в класс Avatar и
назвал её knockback – отбрасывание. Отбрасывание происходит, когда аватар
получает ранение:
FVector knockback; // в классе AAvatar
Перед тем как обдумать направление отбрасывание игрока, когда он получает
удар, нам нужно добавить код к AAvatar::TakeDamage. Вычисляем направление
вектора со стороны атакующего к игроку и сохраняем этот вектор в переменной
knockback:
float AAvatar::TakeDamage(float Damage, struct FDamageEvent const&
DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
//
добавляем отбрасывание, которое применятся в нескольких кадрах
knockback = GetActorLocation() - DamageCauser- >GetActorLocation();
knockback.Normalize();
knockback *= Damage * 500; //
отрасывание пропорциональное урону
}
В AAvatar::Tick, мы применяем отбрасывание к положению аватара:
void AAvatar::Tick( float DeltaSeconds )
{
Super::Tick( DeltaSeconds );
//
применяем вектор отбрасывания
AddMovementInput( knockback, 1.f );
//
делим пополам объём отбрасывания каждый кадр
knockback *= 0.5f;
}
269 |
С т р а н и ц а
Поскольку вектор отбрасывания уменьшается каждым кадром, слабеет со
временем, пока вектор отбрасывания не обновится с очередным ударом.
Выводы
В этой главе, мы исследовали, как создавать экземпляры монстров на экране,
которые бегают за игроком и нападают на него. В следующей главе, мы дадим
игроку способность обороняться, позволяя ему посылать заклинания, которые
нанося урон монстрам.
270 |
С т р а н и ц а
Достарыңызбен бөлісу: |