• 【UE】抓取物体


    目录

    效果

    步骤

    一、制作准心

    二、简单的第三人称视角偏移

    三、基于屏幕正中央的打点与射线

    四、物理抓取的实现(抓取、放下、丢出)


    效果

    步骤

    一、制作准心

    1. 新建一个HUD,这里命名为“HUD_ZhunXin”,同时复制一个第三人称模板蓝图,这里命名为“BP_Character”

    2. 在世界场景设置中,设置默认pawn类为“BP_Character”,HUD类为“HUD_ZhunXin”

    3. 打开“HUD_ZhunXin”,点击重载“接收绘制HUD”

    此时会出现如下节点,该节点输出的“SizeX”和“SizeY”分别表示视口尺寸的长和宽

    接下来我们就要在视口中心画一个十字准心,可以通过“绘制线条”节点来分别绘制一条横线和竖线来表示准心。“绘制线条”节点如下,需要传入线段起始点和终点的坐标,LineColor是线段的颜色,LineThickness表示线条的粗细

    通过如下节点,我们就可以绘制出十字准心中的横线线段(起始点与终点的纵坐标不变,横坐标分别在中心点横坐标基础上加减5)

    再绘制出竖线线段(起始点与终点的横坐标不变,纵坐标分别在中心点纵坐标基础上加减5)

    此时运行游戏可以看到十字准心已经绘制在视口正中心的位置

    二、简单的第三人称视角偏移

    为了让抓取时从摄像机看到的视角比较直接,这里需要对第三人称角色模板蓝图中的摄像机做一点偏移,打开“BP_Character”

    对“FollowCamera”的位置和旋转做一点调整,如下所示

    此时运行可以看到摄像机的画面相对于人物向右偏移了一点

    还需勾选“使用Pawn控制旋转”

    三、基于屏幕正中央的打点与射线

    1. 还是先打开“BP_Character”,新建一个图表,这里命名为“物理抓取”

    然后添加一个“物理柄组件”

    在图表“物理抓取”中添加如下节点,这样当我们点击鼠标后就会从屏幕中心向场景中发出一条射线

    四、物理抓取的实现(抓取、放下、丢出)

    1. 首先我们创建一个actor蓝图,命名为“BP_Cube”,打开“BP_Cube”,添加一个立方体组件。该蓝图代表可被抓取的物体

    一定要勾选模拟物理,并且设置网格体是可移动的

    将“BP_Cube”放入场景中,为了区分我们更改材质为红色

    2. 打开“BP_Character”,继续添加如下节点

    当我们发出射线后,先判断有没有检测到物体,如果检测到了就判断该物体的类型是不是“BP_Cube”(就是我们想抓取的这一类物体),如果是的话获取到Hit Component,

    然后我们就可以利用物理柄组件来抓取物体

    为了防止抓取的物体撞到玩家自己,我们设置Hit Component忽略所有Pawn的碰撞

    在刚开始抓取的时候加一个判断,如果“Hit Component”不是有效的就把他抓起来

     如果是有效的就把物体放下,然后把“Hit Component”置为空

    还需添加如下节点,每帧设置物理抓取组件的位置

    此时我们已经完成了抓取和放下的功能,效果如下:

    此时有个问题是,当拾取的物体碰到其他物体时会产生非常大的旋转,我们可以通过增大网格体的角阻尼来解决这个问题:

    接下来制作将物体丢出去的功能,如下图,主要通过添加冲量的方式来向指定方向扔出物体

    效果如下:

    参考视频:

    https://www.bilibili.com/video/BV1cF411u7cf/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8

  • 相关阅读:
    高性能图表组件LightningChart .NET v11.0发布——增强DPI感知能力
    R语言使用hexSticker包将ggplot2包可视化的结果转换为六角图(六角贴、六角形贴纸、ggplot2 plot to hex sticker)
    掌握这个技巧,你也能成为资产管理高手!
    Oracle/PLSQL: Sign Function
    【计算机网络】第四章:网络层 (万字详解)
    安装Homebrew安装Git(Mac)
    基于OSATE环境的AADL项目——简单的项目构建与分析示例
    HALCON: 内存管理(Memory Management)
    Git (2)—分支操作
    15日均线战法
  • 原文地址:https://blog.csdn.net/ChaoChao66666/article/details/134062702