虚幻引擎需要类始终保持前缀
在Character刚被加载的时候首先调用
如果它被执行,那么它已经被完全加载,完全初始化,这是我们可以信赖的第一件事。
每一帧都会被调用,也传递了一个delta时间访问
UCameraComponent
USpringArmComponent
CreateDefaultSubobject<CLASSNAME>(“TABNAME”)
其中CLASSNAME是实例的类型,TABNAME是它在编辑器中显示的名字
数据视图很难读懂正在发生的事情
蓝图读起来比较快
弹簧臂 SetupAttachment(RootComponent)
RootComponent是层次结构中的第一个组件
相机 SetupAttachment(弹簧臂)
相机安装在弹簧臂上
因为我们想要角色和相机之间有一定的距离
UPROPERTY,UFUNCTION,UCLASS,USTRUCT,UENUM(Unreal Macros 虚幻宏)
标记C++类,用于像编辑这样的事情,蓝图访问,甚至对于网络行为。
定义你的代码应该在哪里运行,服务器还是在本地客户机上。
而且也是为了内存管理,将会用于追踪指针和一个对象的内存,
比如
UProperty(VisibleAnywhere) //它将在任何地方可见
void AMainCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
// 加两个输入事件控制相机
// 轴运算
PlayerInputComponent -> BindAxis("LookRight", this,&AMainCharacter::AddControllerYawInput);
PlayerInputComponent -> BindAxis("LookForward", this,&AMainCharacter::AddControllerPitchInput);
}
我们其实有两个选择,BindAction和BindAxis
在目前我们对绑定轴感兴趣,因为希望能够移动前进和倒退。
我们可以联想一下,输入设备是GamePad的情况,拇指杆滑动,会在-1到1的区间里变化。
在输入设备是键盘的情况下,它仅仅是按下Key和松开Key的问题(0,1 二值)。
BindAxis 参数 (名称,接收输入对象,想要触发的函数)
触发委托之后,会把名称传递给接收输入对象,传递一个需要被触发的函数
Character已经封装了一些函数,
我们只需要说出往哪个方向走
目前只需要前后左右四个方向,就可以用函数直接获取。
再传递一个value 是一个-1到1的值
AddMovementInput(GetActorForwardVector(),value);
打开编辑器的项目设置,输入,绑定
直接使用Pawn中提供的函数即可
APawn::AddControllerYawInput
在VS2019 IDE中 可以直接Ctrl+鼠标左键,跳转到对应函数,查看源码。
虚幻引擎的一个问题是,它有800万行的代码,检索代码是很慢的
此处包含pitch、yaw、roll等知识点
Yaw 指的是水平旋转,pitch 指的是垂直旋转,roll 未知