Mi información de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Weapon
subclase como arma de granada derivadaWeapon
en la claseFire
Adición de funcionesvirtual
La palabra clave se convierte en una función virtual para que la clase de granada pueda heredarse y reescribirse.ProjectileWeapon
reescritura mediaFire
Función, crea una nueva variable de plantilla para generar proyectiles.Fire
Lógica de reescritura de funciones //生成的投射物
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++
nombre definido enActor
El plano se usa como una bala y se agregan un lanzador y una malla de esfera. La velocidad inicial y la velocidad máxima del lanzador se establecen en 2000 y el efecto de rebote del proyectil está activado. La malla esférica permite la simulación física.BeginPlay
El evento lógico se llama enBeginPlay
Obtenga el rango de ángulo de visión predeterminado enFAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT