可以通过设置角色模型的碰撞来让摄像机摇臂的碰撞进行选择性的碰撞
场景存在多个摄像机方便切换摄像机系统
引擎碰撞中的visible和camera默认值永远都是block
可以通过设置角色模型的碰撞来让摄像机摇臂的碰撞进行选择性的碰撞
场景存在多个摄像机方便切换摄像机系统
引擎碰撞中的visible和camera默认值永远都是block
角色搭建流程:
进行分析
创建类
外观设置
基础运动功能
动画匹配
其他功能制作
可以使用组件重叠判断来辅助设计ai
可以将胶囊体缩小,搭建一套贴合角色模型的碰撞
在攻击中限制跳跃和移动
执行前判断是否正在进行攻击,可以有效解决攻击中的跳跃和移动误触,防止做出不想要的行为
对于攻击,在攻击前判断是否在跳跃或者移动
在移动中,通过判断是否正在攻击打断移动
做行为前判断其他行为的标识位,可有效做出限制
防止情况:
攻击中跳跃或移动
移动中进行攻击
跳跃中攻击
动画无法播放时,记得查看插槽名是否正确
使用标识位(bool)思想来进行行为逻辑的判断或者按帧执行
蒙太奇用于打断状态机,播放指定动画
规划与边想边做需要结合,这样才能提高开发速度
根据需求使用复用方案:
1、创建一个新父类
2、直接使用原父类
3、修改父类兼容子类需求
对组件进行追踪,将指针的类型修改为其父类,使用C++多态特性,在子类中要删除修改过的父类创建的组件,重新创建时需要修改文本宏TEXT()
switch与C++语法相同,可写在Tick中
switch可用于制作有限状态机
根据情况,对switch的结构和分支进行优化
使用switch来对枚举情况进行判断,放在Tick中用于判断状态
思考结构如何形成闭环
涉及转弯影响speed的值
在Blendspace可以修改分栏或插入相同动画序列来改善动画抖动问题
FORCEINLINE宏让函数使用内联
状态使用枚举类型来保存
创建枚举类型:
虚幻C++枚举类型开头要加E,使用C++申请语法后接存储类型(uint8)
枚举要参加反射系统,需要在前加上宏:UENUM(BlueprintType)
值命名规范:使用类名缩写作为前缀
值要参与反射系统,须在后加上宏:UMETA(DisplayName="")
实现一个功能前的流程
1、说清楚需求(画图描述或文字)
2、实现它的一个基本原理
3、开始实现
与设计师协作时,蓝图可以为BlueprintReadOnly
自行制作时,蓝图可为BlueprintReadWrite
要写注释
做好规划,再进行下一步行动
使用BlueprintImplementableEvent关键字搭配UE蓝图系统使用
父类函数若要在子类函数中重写时,则需要添加virtual
构造函数放在变量处的public中
另一个public中放置函数
带有反射系统的成员不能放在private中
多进行安全性的判断
组件不要分类
在开始开发前,先进行底层设计,进行规划,后期增删改查会方便许多
子UI完成自己的逻辑
UI获得蓝图引用一般获取C++版本的父类
复杂的逻辑使用C++
使用原生C++类操控UI
临时存放的变量理应不应该被修改
对于引用,需要判断其有效性,保证代码的健壮性
临时变量可以提高代码可读性