UE4 射线检测案例(C++)

UE4 射线检测案例(C++),第1张

UE4 射线检测(C++)

开发场景:

  1. 玩家(C++开发的)
  2. 武器(C++)
  3. 射线检测函数
    蓝图:
    C++:

效果:

制作流程:

  1. 添加开火按键映射:

  1. 新建一个继承ACharacter的C++:
    用蓝图继承刚刚新建的C++
    然后设置好游戏模式

我 这是是 用了一个枚举,其实你直接调用这个方法就行了,不需要加switch,直接FireWeaponPrimary();

这里只看服务端的

这是一个玩家摄像头

这是玩家武器

按键后上面的函数调用会到这里来,注意看函数名字

这个是服务器的方法实现在这里:

然后我们只看射线检测:

  1. CameraLocation:这个是按下键后的第一时间的摄像机位置
  2. EndLocation:这个是射线的尾,计算方式:摄像头的向前向量 * 一个距离 + 摄像头的位置
    这就是射线所发出的线的位置,两点一线
  3. ETraceTypeQuery::TraceTypeQuery1 : 就是一个碰撞通道
  4. false: 碰撞的检测方式
  5. IgnoreArray :一个碰撞的东西添加进去之后,就会被忽略 ,就是这里面的东西不参加射线检测的意思
  6. EDrawDebugTrace::Persistent :这个就是Debug的射线 在游戏中画出来,有4个类型(只介绍使用的这个),一直保持,就是开q之后出来的射线检测不会消失
  7. HitResult :这个东西就是击中的返回集,比如说击中玩家,打印玩家的名字
  8. true :这个是是否要忽略自己(和前面那个集合添加的效果一样,这个为true前面那个就 可以不用添加this了)
  9. FLinearColor::Red :射线颜色
  10. FLinearColor::Green: 射线击中后变成颜色
  11. 3.f :因为我们Debug选的是持久,使用这个3.f设置在这里没有影响(如果想要有影响可以把前面的持久改了)
  12. bool HitSuccess:这个是返回值,当为true的时候就是有目标被击中


记住设置碰撞 Visibility 为阻挡就可以被射线检测到

本项目是跟B站的一个UP主做的“TurBo强”

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/717267.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-25
下一篇2022-04-25

发表评论

登录后才能评论

评论列表(0条)

    保存