执行 UGameplayStatics::ApplyPointDamage(HitActor, 20.0f, ShotDirection, Hit, MyOwner->GetInstigatorController(), this, DamageType); 这行语句的时候,调试下发现下一行语句中Hit 中的PhysMaterial 为Nullptr. EPhysicalSurface SurfaceTyepe = UPhysicalMaterial::DetermineSurfaceType(Hit.PhysMaterial.Get()); 导致无法根据物理材质类型不同对击中效果进行不同处理, 解决方法. FCollisionQueryParams QueryParams; 对象QueryParams中的bReturnPhysicalMaterial默认为false, 将其改为true即可; QueryParams.bReturnPhysicalMaterial = true; 更改后调试结果为