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());
			}
			


触发的方式自己写

发布了20 篇原创文章 · 获赞 1 · 访问量 2708

猜你喜欢

转载自blog.csdn.net/weixin_42295465/article/details/88322304