技术|UE4 C++PhysicalSurface(_杰森大师)

先在项目设置的Physics中设置 技术|UE4 C++PhysicalSurface(_杰森大师)
文章图片

在内容浏览器增加物理材质 技术|UE4 C++PhysicalSurface(_杰森大师)
文章图片

在里面进行定义
技术|UE4 C++PhysicalSurface(_杰森大师)
文章图片

进入人物的physics中将自己创的定义进去
【技术|UE4 C++PhysicalSurface(_杰森大师)】这样角色就拥有了物理材质,接下来进入程序
加上互动。呈现点效果

进入项目.h文件中增加宏定义,=//就是给这两个物理材质增加个假名,等下容易进行调用 #defineSURFACE_FLESHDEFAULTSurfaceType1 #defineSURFACE_FLESHVULNERABLESurfaceType2再回到自己想互动的actor。h中 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "weapon") class UParticleSystem*FleshImpactEffect; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "weapon") class UParticleSystem*TraceEffect; 再去。cpp中#include "Particles/ParticleSystem.h" #include "项目.h" #include "PhysicalMaterials/PhysicalMaterial.h"在互动的地方写下EPhysicalSurface SurfaceType = UPhysicalMaterial::DetermineSurfaceType(Hit.PhysMaterial.Get()); //定义SurefaceTypeFHitResult Hit; //碰撞的位置UParticleSystem*SelectedEffect = nullptr; //先自己定义一个空的粒子,方便选择 switch (SurfaceType)//相当于蓝图中的切换开关 { case SURFACE_FLESHDEFAULT://宏定义代表刚刚定义的SurfaceType1 case SURFACE_FLESHVULNERABLE://宏定义代表刚刚定义的SurfaceType2break; //循环中断 SelectedEffect = FleshImpactEffect; default://当没有碰触到那两个粒子的话就选择默认粒子 SelectedEffect = DefaultImpactEffect; break; } if (SelectedEffect)//如果选择粒子为真触发 { UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), SelectedEffect, Hit.ImpactPoint, Hit.ImpactNormal.Rotation()); }

触发的方式自己写

    推荐阅读