моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Weapon
подкласс как производное гранатометное оружиеWeapon
в классеFire
Добавление функцииvirtual
Ключевое слово становится виртуальной функцией, поэтому класс гранаты можно унаследовать и переписать.ProjectileWeapon
средняя перезаписьFire
Функция, создайте новую переменную шаблона для генерации снарядов.Fire
Логика перезаписи функций //生成的投射物
UPROPERTY(EditAnywhere,BlueprintReadOnly,Category = "ProjectileWeapon")
TSubclassOf<AActor> ProjectileClass;
//--------------------------------------------------------------------------------------------------
void AProjectileWeapon::Fire()
{
AActor* MyOwner = GetOwner();
if (MyOwner)
{
FVector EyeLocation;
FRotator EyeRotation;
MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotation);
FActorSpawnParameters SpawnParams;
//设置投射物生成参数:即使生成位置有碰撞,也要强行生成投射物,不进行碰撞检测处理
SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
//获取枪口位置
FVector MuzzleLocation = SkeletalComponent->GetSocketLocation(MuzzleSocketName);
//生成并发射投射物
GetWorld()->SpawnActor<AActor>(ProjectileClass, MuzzleLocation, EyeRotation, SpawnParams);
}
}
C++
имя, определенное вActor
В качестве пули используется чертёж, а также добавляется пусковая установка и сетка сферы. Начальная и максимальная скорость пусковой установки установлены на 2000, а также включен эффект отскока снаряда. Сферическая сетка позволяет моделировать физику.BeginPlay
Логическое событие вызывается вBeginPlay
Получите диапазон углов обзора по умолчанию вFAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT