1. UE4内置的函数:UWorld::LineTraceSingleByChannel
    该线轨迹将光线射入空间,并根据选定的轨迹通道进行碰撞
void AFirstPawn::lineTraceSingleByChannel() {FHitResult HitResult;FVector Start = GetActorLocation() /*+ FVector(0.f, 0.f, 75.f)*/;FVector End = Start + GetActorForwardVector() * 500.f;FCollisionQueryParams CollisionQueryParams;CollisionQueryParams.AddIgnoredActor(this);GetWorld()->LineTraceSingleByChannel(HitResult, Start, End, ECollisionChannel::ECC_Visibility, CollisionQueryParams);if (HitResult.bBlockingHit) {//DrawDebugSphere(GetWorld(), HitResult.Location, 15.f, 12, FColor::Red, false, 5.f);//DrawDebugLine(GetWorld(), Start, HitResult.Location, FColor::Red, true, 3.f);DrawDebugPoint(GetWorld(), HitResult.Location, 5.f, FColor::Blue, false, 5.f);}
}

最后一个参数:FCollisionQueryParams的对象作为可选参数,该参数可以指定有关冲突查询的详细信息,例如要忽略的参与者.
我们在场景中摆放三个立方体
第一个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【阻挡】
第二个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【重叠】
第三个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【忽略】

可以看到只有第一个设置【Visibility】->【阻挡】发生了作用
2. UWorld::LineTraceMultiByChannel

void AFirstPawn::lineTraceMultiByChannel() {FHitResult HitResult;FVector Start = GetActorLocation() /*+ FVector(0.f, 0.f, 75.f)*/;FVector End = Start + GetActorForwardVector() * 1000.f;FCollisionQueryParams CollisionQueryParams;CollisionQueryParams.AddIgnoredActor(this);TArray<FHitResult> HitResults;GetWorld()->LineTraceMultiByChannel(HitResults, Start, End,    ECollisionChannel::ECC_Visibility); for (int32 i = 0; i < HitResults.Num(); i++) {if (HitResults[i].bBlockingHit) {FString ActorName = HitResults[i].Actor->GetName();printf_k(i, "%d Actor Name: %s", i, *ActorName);} else {//printf_k(i, "%d Failed hit!", i);FString ActorName = HitResults[i].Actor->GetName();printf_k(i, "%d Failed hit: %s", i, *ActorName);}}
}

放置是三个立方体,从前往后设置参数:
第一个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【忽略】
第二个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【重叠】
第三个立方体设置【碰撞】->【碰撞预设】->【碰撞相应】->【Visibility】->【阻挡】

第一个立方体直接被忽略掉,第二个立方体检测到重叠但是没有检测到碰撞,第三个检测到了碰撞
3.UKismetSystemLibrary::BoxTraceSingleForObjects

/**
* ObjectTypeQuery1 : World Static
* ObjectTypeQuery2 : World Dynamic
* ObjectTypeQuery3 : Pawn
* ObjectTypeQuery4 : Physics Body
* ObjectTypeQuery5 : Destructible
* ObjectTypeQuery6 : First Custom Object Type
* ObjectTypeQuery7 : Second Custom Object Type
*/void AFirstPawn::boxTraceSingleForObjects() {FHitResult HitResult;FVector Start = GetActorLocation() /*+ FVector(0.f, 0.f, 75.f)*/;FVector End = Start + GetActorForwardVector() * 1000.f;FCollisionQueryParams CollisionQueryParams;CollisionQueryParams.AddIgnoredActor(this);TArray<TEnumAsByte<EObjectTypeQuery>> ObjectTypes;ObjectTypes.Add(EObjectTypeQuery::ObjectTypeQuery2);TArray<AActor*> ActorsToIgnore;ActorsToIgnore.Add(this);FHitResult BoxTraceResult;UKismetSystemLibrary::BoxTraceSingleForObjects(GetWorld()//UWorld对象, Start   //跟踪的起始位置                        , End     //是跟踪的结束位置, FVector(32.f, 32.f, 32.f) //跟踪盒子一半的大小, FRotator() //跟踪盒子旋转方向, ObjectTypes//是对象类型数组, true //是否对复杂的几何图形进行跟踪, ActorsToIgnore//要忽略数组的参与者/*** ForOneFrame:来绘制单个帧的跟踪* ForDuration:使跟踪能够持续指定的时间* None:示不绘制任何调试形状* Persistent:表示调试形状将在世界中持续存在*/, EDrawDebugTrace::ForDuration, BoxTraceResult //碰撞的结果, true, FColor::Red //跟踪颜色,它将用于绘制方框, FColor::Blue//是跟踪命中颜色,用于显示命中的点);if (BoxTraceResult.bBlockingHit) {print_k(1, "Blocking Hit!");}}

aaa

UE4碰撞射线检测2相关推荐

  1. UE4 手电筒射线检测

    UE4 手电筒射线检测 功能物品:手电筒射线 功能描述:用于对NPC造成伤害或者有其他交互左右的物品 实现方法:每隔0.2秒发射几百根射线用于检测. 首先在摄像头上绑定一个SpotLight,初始设置 ...

  2. 【UE4】射线检测获取屏幕中心位置与制作瞄准准星

    射线检测 通过获取屏幕的中心点二维坐标,将其转换为三维世界坐标系,即可利用射线检测得到想要的数据. 准星材质 制作一个简单的圆形材质,也可使用十字准星贴图制作. 在HUD中绘制 新建一个继承自HUD的 ...

  3. UE4使用射线检测来显示UI并与物体交互

    小白上路记录 例子:使用第一人模板玩家,射线检测来实现检测到才显示UI,结合蓝图接口实现与物体的交互(更换椅子材质和灯光颜色) 一:玩家蓝图 二:椅子蓝图 三:灯光蓝图(同理椅子蓝图) 四:UI图表

  4. [UE4入门笔记(13)] 40.准星 41.射线检测(续第12篇) 42.行为状态机 --梁迪老师UE4纯C++Slate开发沙盒游戏

    目录 前言: 本篇学习内容: 40.准星 41.射线检测(续第12篇) 42.行为状态机 前言: 笔者目前在校本科大三,目标方向是人工智能.计算机视觉.上一个OpenCV学习笔记专栏已完结,在学习完O ...

  5. 【UE4】游戏中近战攻击判定检测(一)——射线检测!

    这篇主要分享一下如何在UE4中实现游戏中的近战攻击判定的方法之一--"射线检测",. 首先来说一下实现的逻辑: 1.我们会在武器上设置若干个射线发射点 2.当我们攻击的时候,游戏中 ...

  6. Unity 射线与碰撞范围检测【踩坑记录】

    射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider,Physics.Raycast是不会检测到Collider 2D的(这个让我有 ...

  7. Unreal Engine 4 物理模拟之物理碰撞、重叠与射线检测

    1.碰撞组件基本属性 碰撞组件的属性如图 属性简要介绍: Simulation Generates Hit Events:是否对碰撞事件进行通知 Phys Material Override:指定该M ...

  8. 直播笔记 | Unity中射线检测详解

    本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 这周三我们直播剖析了Unity中射线检测的功能,以下是直播内容精华部分笔记. 完整录播:https: ...

  9. 吃鸡空投掉落射线检测,粒子系统产生红色信号烟

    1.首先将飞机和空投模型导入Unity,添加进场景视图. 2.给飞机添加飞行动画,(由于飞机只飞行一次 将Culling Mode勾选成Cull Completely) 3.给飞机和空投添加碰撞框,并 ...

最新文章

  1. java并发排序_Java基于fork/koin类实现并发排序
  2. C语言模拟质点运动轨迹坐标,C语言定时器的使用 计算质点运动的移位
  3. c++ 读取数字,直到输入非数字字符为止的算法(附完整源码)
  4. 今天写的一个makefile,备份下
  5. Xcode 升级后,cocoaPod 问题
  6. 项目中的加减法--《最后期限》读书笔记(1)
  7. C++ 实现布隆过滤器(BloomFilter)
  8. JavaScript实现搜索框效果
  9. 什么是Cookie对象,Session对象,Application对象等问题
  10. docker 改host_所以到底该如何修改 docker 容器的端口映射!!!
  11. 深度学习在计算机视觉点云中的发展与未来
  12. 数据科学 IPython 笔记本 7.9 组合数据集:连接和附加
  13. 279 Perfect Squares 完美平方数
  14. Camera ISP与DSP的区别(二十五)
  15. AMQ学习笔记 - 16. 确认机制的测试
  16. [翻译] ios-image-filters
  17. python解析xml格式的excel_Python 读取二进制、HTML 、XML 格式存储的 Excel 文件
  18. 苹果无需越狱(iPhone、iPad)手机多开教程
  19. 终极讲师介绍:集齐 27 位大神召唤亚洲首届 Rust 开发者大会!
  20. Linux中的远程登陆服务

热门文章

  1. 【Python脚本抢红包】用Python写了一个自动抢红包工具,今年过年准备大干一场
  2. CSS常见的居中方法
  3. app上线——“游手乐”懂你的手游平台
  4. BootStrap一页通(样式+组件+插件)
  5. 使用remoting 代替c# web service实现航班eterm命令发送和接收
  6. 十年一剑,股票自动交易实验(寻找股海宝藏之旅—解锁股市交易更多姿势)
  7. 2021-09-10 LeetCode1894-找到需要补充粉笔的学生编号(每日一题)
  8. 大军师司马懿之军师联盟
  9. layui-layer.open打开新页面进行数据处理,处理完成后数据表格重载问题
  10. 简单爬虫——京东网图书爬取