IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 【UE·GamePlay篇】攀爬系统系列教程(序)——教程介绍和开发总结 -> 正文阅读

[游戏开发]【UE·GamePlay篇】攀爬系统系列教程(序)——教程介绍和开发总结

教程介绍

这个系列教程是对UE4里开发攀爬相关功能的总结和教学,前面几篇文章实现的功能和UE4 Climb System - Tutorial这个系列教程讲的基本完全相同。因为视频里作者已经对每一步如何实现的都进行了演示,所以我文章里的内容不会对每一个细节进行讲解,只会对关键功能实现思路或者作者没有讲明白的地方进行讲解。
系列文章目录:

工程地址:【github】UE4_ClimbSystem

它目前包含以下功能(后续还会增加新的功能):

  • 在空中时自动抓取墙壁边缘并悬挂
  • 悬挂时可以爬上墙壁(Space键)
    在这里插入图片描述
  • 悬挂时可以左右移动(A/D键)
  • 悬挂时在墙壁边缘可以飞跃到相邻的墙壁(在有墙壁的情况下,A/D键+Space键)
    在这里插入图片描述
  • 悬挂时在墙壁边缘时可以左右拐弯(A/D键)
    在这里插入图片描述
  • 悬挂时可以回头看并取消(W/S键)
  • 回头看状态时可以退出悬挂状态或者反向跳跃(Space键反向跳,S键退出悬挂)
    在这里插入图片描述

本工程和视频教程作者工程不同的地方:

  • 重构了蓝图,简化了大量节点。包括但不限于:

    • 简化了大量的Branch判断节点。
    • 将播放Montage的逻辑全部放到CharacterBP里面。替换原先的CharatcerBP->AnimBP的PlayMontage->AnimBP的Anim_Notify->CharacterBP的复杂流程。在这里插入图片描述在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 悬挂时的左右移动功能改为用动画曲线来实现,表现更加自然。原先的做法是只要按下方向键就会移动,缺点在于如果快速的按下抬起方向键,角色动画没有播放完整但是却会快速移动。
    Before:
    在这里插入图片描述
    After:
    在这里插入图片描述
    在这里插入图片描述

  • 更多更详细的注释。 对于每段代码的功能、为什么这么写、蓝图使用技巧都进行了注释。


学习资料:


开发过程中的笔记和总结

物理

  • 碰撞检测结果的HitLocationHitImpactPoint区别:
    HitImpactPoint指的是两个碰撞体交叉的点,HitLocation是发生碰撞时当前碰撞体的位置。如图的球形连续检测的例子,HitLocation比HitImpactPoint在水平方向上差了一个球形半径的大小。在视频教程里的例子使用的是HitLocation,所以在计算一些位置的时候都要多加上半径。在我这个工程里统一使用的都是HitImpactPoint。
    在这里插入图片描述

蓝图

  • 如何简化多重Branch的蓝图逻辑
    在视频教程里,作者使用了大量的Branch判断。比如当变量A为true时调用方法1,为false时检查变量B,变量B为true时调用方法2,以此类推,最后嵌套的Branch非常多,蓝图看起来很乱,而且很容易漏掉一个情况或者重复了相同的节点,当再增加新的状态时就要考虑多种可能性很麻烦。下面以跳跃键的逻辑为例,说明一下我是如何优化大量Branch的情况的。
    Before:
    在这里插入图片描述
    After:
    在这里插入图片描述

    • 首先把跳跃的逻辑包装成方法
    • 用Sequence罗列多种可能
    • 满足情况A时走对应逻辑,然后return,这样就不会走下面所有逻辑
    • 将来如果添加新的状态,只需要Sequence再加一个输出引脚就可以了
  • 方法Function vs 宏Marcos vs 自定义事件CustomEvent

    • 宏的输入输出引脚添加方法:将变量类型改为Exec
      在这里插入图片描述
FunctionMarcosCustomEvent
局部变量支持不支持不支持
返回值支持支持不支持
外部调用支持不支持支持
多输入输出引脚不支持支持不支持
LatentAction(Delay型节点)不支持支持支持

动画

  • 动画事件的触发类型Queued vs Branching Points
    在这里插入图片描述

    • Branching Points更加精确,开销更高。
    • 当对动画事件的触发时机要求很精确时使用Branching Points。比如第几帧开枪,第几帧产生攻击判定。要求不精确时使用Queued(实际触发时会差1到几帧),比如走路产生走路烟。
  • Montage vs StateMachine
    参考:When to use State Machine or Anim Montage?

    • StateMachine的优点:
      • 复杂的动画混合
      • 复杂的动画状态切换
    • Montage的优点:
      • 复杂的动画组合
      • 使用方便,不需要添加动画事件就可以接受回调
    • 如果有需求是只能用StateMachine或者只能用Montage才能实现,比如复杂的混合动画(StateMachine),一次播两个动画序列(Montage),或者不定次数的Loop动画,比如这个工程里的保持悬挂状态(StateMachine)。这个时候没有犹豫的必要。
    • 如果两种方案都能实现需求,如何选择?看这个动画和其他动画的耦合性,耦合性小就用Montage实现。还是以这个工程为例,比如说TurnBack状态(悬挂时回头看),MoveLeft和MoveRight以及Hanging都可能进入TurnBack状态,同时TurnBack状态可以退出Hanging以及重新进入TurnBack,它和其他动画的耦合性很强,必须做成StateMachine。
      在这里插入图片描述
      再比如这个工程里的飞跃状态,飞跃状态只能由Hanging状态下才会触发,同时飞跃完成后必定进入Hanging,用Montage就比较合适。
      在这里插入图片描述
  • Play Montage(CharacterBP) vs Play Anim Montage(CharacterBP) vs Montage Play(AnimBP)
    这三个函数都能播放Montage,区别在于:

    • 前面两个是角色蓝图里的节点。Play MontageLatentAction不能在方法里使用,同时有多个输出节点作为回调,还可以设置播放起始位置(StartingPosition填入百分比),比Play Anim Montage好用。
      在这里插入图片描述
    • Montage Play是动画蓝图的节点,当这个Montage和动画蓝图其他逻辑变量有关联时才适合在动画蓝图里播放Montage。
    • 一般情况下,建议在角色蓝图里使用Play Montage
  • 如何查看RootMotion?
    勾选这两个选项,观察红色指示线。
    在这里插入图片描述

  • AnimSequence启用了RootMotion没有起作用?
    找到动画蓝图,修改RootMotionMode。默认RootMotion只会对Montage生效。
    在这里插入图片描述


关于作者

  • 我是水曜日鸡,一个爱好二次元的游戏程序员,大家都习惯叫我鸡佬。曾参与索尼中国之星项目《硬核机甲》的开发。 目前在某大厂做UE4项目。

欢迎来我建的群891809847一起聊游♂戏,我的群还蛮大的。
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 19:09:43  更:2021-11-16 19:11:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:31:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码