先在項目設置的Physics中設置
在內容瀏覽器增加物理材質
在裏面進行定義
進入人物的physics中將自己創的定義進去
這樣角色就擁有了物理材質,接下來進入程序
加上互動。呈現點效果
進入項目.h文件中增加宏定義,=//就是給這兩個物理材質增加個假名,等下容易進行調用
#define SURFACE_FLESHDEFAULT SurfaceType1
#define SURFACE_FLESHVULNERABLE SurfaceType2
再回到自己想互動的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());//定義SurefaceType
FHitResult Hit;//碰撞的位置
UParticleSystem*SelectedEffect = nullptr;//先自己定義一個空的粒子,方便選擇
switch (SurfaceType)//相當於藍圖中的切換開關
{
case SURFACE_FLESHDEFAULT://宏定義代表剛剛定義的SurfaceType1
case SURFACE_FLESHVULNERABLE://宏定義代表剛剛定義的SurfaceType2
break;//循環中斷
SelectedEffect = FleshImpactEffect;
default://當沒有碰觸到那兩個粒子的話就選擇默認粒子
SelectedEffect = DefaultImpactEffect;
break;
}
if (SelectedEffect)//如果選擇粒子爲真觸發
{
UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), SelectedEffect, Hit.ImpactPoint, Hit.ImpactNormal.Rotation());
}