UE4 C++PhysicalSurface(_傑森大師)

先在項目設置的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());
			}
			


觸發的方式自己寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章