Day1
添加轴动作
EAxis::Type //轴方向 枚举
//旋转输入轴
UInputModifierSwizzleAxis* SwizzleAxis = NewObject<UInputModifierSwizzleAxis>(MappingContext);
KeyMapping.Modifiers.Add(SwizzleAxis);
//取反输入轴
UInputModifierNegate* Negate = NewObject<UInputModifierNegate>(MappingContext);
KeyMapping.Modifiers.Add(Negate);
玩家角色移动
玩家角色移动视角
GetWorld()->GetDeltaSeconds(); //获取时间碰撞系数
//Tick : 时间膨胀系数 跟帧率相关 , 每一帧的事件间隔120帧显示 : 1/120;
UE C++像蓝图提供变量
Tips :
- 类是生成实例的依据 , 拖拽到场景后变成实例化
- 混合空间中的动画默认打了同步组
- 同步组 : 解决2个动画的衔接问题
触发事件 :
ETriggerEvent::Started //按下
ETriggerEvent::Completed //松开
Day2
设置默认的子对象类
父类添加好的组件添加自己的命名组件
替换了引擎的移动组件 , 换成自己的移动组件
创建自己的控制器和相机管理
相机放到玩家控制器 -> 玩家控制器放到gamemode
C++弹簧臂的滞后效果
FInterpTo
是 Unreal Engine 中的一个函数,用于在两个值之间进行插值。它的作用是在一定的时间内,将一个值平滑地从当前值(起始值)变换到目标值,实现渐变效果。
具体来说,FInterpTo
函数有以下参数:
Current
:当前值,即需要进行插值的值。Target
:目标值,即希望当前值变换到的目标值。DeltaTime
:时间增量,即每帧之间的时间间隔,通常用于控制变换的速度。InterpSpeed
:插值速度,表示在给定时间内,当前值从当前位置移动到目标位置的速度。值越大,移动速度越快。InterpAcceleration
:加速度,表示在插值过程中的加速度,用于使变换更加平滑。通常情况下可以忽略,设置为0即可。
在你提供的代码中,FMath::FInterpTo(OffsetSpringZ, 0, DeltaTime, 10)
表示将 OffsetSpringZ
的当前值(起始值)平滑地从当前位置变换到目标值0,使用给定的 DeltaTime
和插值速度10。这样就会在一定的时间内使得 OffsetSpringZ
平滑地过渡到0,实现了一个平滑的过渡效果。
待机随机动画
子系统 :
生命周期 :
创建: 第一次调用会创建
消亡: 如果子系统是Instance会随着子系统类型消亡
GameInstance : 游戏实例独有一份
LocalPlayer : 一个玩家独有一份
world: 世界独有一份
第一次调用生效
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
c++获取子系统
蓝图 : 获取子系统
生成骨骼网格体和静态网格体
api :
组件 : GetOwner(); //获取当前使用组件的角色对象
相机管理器 :
GetOwningPlayerController(); 使用当前相机的玩家控制器
UpdateCamera(); 相当于Tick
动画通知 : 必须加UFUNTION
AnimNotify_RelaxedEnd();
Tips :
所有的U类构造函数 , 要么无参 , 要么带有构造器
UGameplayStatic 不要用于联网生成
引入文件 : 格式
#include "Components/BillboardComponent.h"
#include "framework/BillboardComponent.h"