• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

UE设置和使用物理材质形成不同交互效果

武飞扬头像
行者 无疆
帮助3

UE可以通过设置物理材质,使物体对于不同材质产生不同交互效果。比如:射击地面和射击人物产生不同效果,不同材质地面行走脚步声不同。

项目设置/物理:

学新通

 创建物理材质,设置表面类型:

学新通

把物理材质设置给物理资产

学新通

 然后进入代码:

武器的射击函数(使用的是射线检测):

  1.  
    //添加头文件
  2.  
    #include "PhysicalMaterials/PhysicalMaterial.h"
  3.  
     
  4.  
    FCollisionQueryParams QueryParams;
  5.  
    QueryParams.bReturnPhysicalMaterial = true;
  6.  
     
  7.  
    FHitResult Hit;
  8.  
    if (GetWorld()->LineTraceSingleByChannel(Hit, EyeLocation, TraceEnd, ECC_Visibility, QueryParams))
  9.  
    {
  10.  
    EPhysicalSurface SurfaceType = UPhysicalMaterial::DetermineSurfaceType(Hit.PhysMaterial.Get());
  11.  
     
  12.  
    UParticleSystem* SelectedEffect = nullptr;
  13.  
    switch (SurfaceType)
  14.  
    {
  15.  
    case SURFACE_FLESHDEFAULT: //SurfaceType1使用了#defind重定义
  16.  
    case SURFACE_FLESHVULNERABLE: //SurfaceType2
  17.  
    SelectedEffect = FleshImpactEffect;
  18.  
    break;
  19.  
    default:
  20.  
    SelectedEffect = DefaultImpactEffect;
  21.  
    }
  22.  
     
  23.  
    if (SelectedEffect)
  24.  
    {
  25.  
    UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), SelectedEffect, Hit.ImpactPoint, Hit.ImpactNormal.Rotation());
  26.  
    }
  27.  
    }
学新通

 遇到的问题(ue4.27  vs2019):

.build.cs中应加入PHYSICSCORE

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "PHYSICSCORE" });

在项目同名头文件xxx.h中加入#define后,想在武器类中使用,无法#include

  1.  
    //xxx.h 项目同名头文件
  2.  
    #define SURFACE_FLESHDEFAULT SurfaceType1
  3.  
    #define SURFACE_FLESHVULNERABLE SurfaceType2

目前解决方法:打开解决方案属性/VC 目录/常规/包含目录/编辑/创建新行

把xxx.h所在文件夹绝对路径加进去。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhgbhf
系列文章
更多 icon
同类精品
更多 icon
继续加载