先在项目设置的Physics中设置
文章图片
在内容浏览器增加物理材质
文章图片
在里面进行定义
文章图片
进入人物的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());
}
触发的方式自己写
推荐阅读
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- Application|linux应用编程笔记(5)系统调用文件编程方法实现文件复制
- 个人日记|K8s中Pod生命周期和重启策略