斯坦福UE4C++课程P3-P4
新建SCharacter的C++类,继承自ACharacter
注意事项:C++character.h保证所有添加的头文件在生成文件.generated.h上方
虚幻引擎自动给C++类添加前缀:
U:从UObject继承
A:从Actor类继承
F:结构体Structs
E:枚举Enums
I:接口Interfaces
VS里ctrl+f5编译后,将打开UE编辑器,创建的C++类显示在内容浏览器中。
新建蓝图类,选择继承自前面创建的SCharacter类。
左侧有若干组件:
CapsuleComponent(Inherited):处理碰撞collision和移动movement
ArrowComponent(Ingerited):显示人物方向
Mesh(Inherited):人物的网格体
CharacterMovement(Inherited):关于人物移动的C++组件,2000行代码
最简单的把上面蓝图类作为可控角色的方法是,把蓝图类拖入视口中,删除已有的角色出生点,右下侧搜索poss,设置Auto Possess player为player0。
此法最终不会被使用,但是对debug很有用。
点击左上file,save all levels存储关卡。

为SCharacter角色添加摄像机组件
在SCharacter.cpp下添加头文件
在SCharacter.h的protected下添加弹簧臂组件和相机组件
在SCharacter.cpp文件的构造函数下添加
ctrl+f5编译,蓝图类组件多了上面创建的弹簧臂和相机,但右侧细节为空白的,因为默认设置为蓝图不可见。
介绍虚幻引擎的资产系统(Unreal Property System):
UPROPERTY, UFUNCTION, UCLASS, USTRUCT, UENUM(Unreal Macros)
控制编辑器editor蓝图blueprint访问、网络行为(多玩家情况下)。
实际上被用于追踪指针和一个对象的内存,建立若干链接。
是虚幻引擎提供的样板文件
使用方法类似下方:
使得弹簧臂和相机组件中的变量在编辑器editor和蓝图blueprint中均可见。
现在编译,回到蓝图类,发现弹簧臂和相机组件的details面板处可以看到所有属性。
tips:SetupAttachment函数把弹簧臂设置到根组件RootComponent,把相机设置到弹簧臂SpringArmComp,使得相机跟随弹簧臂而运动。
弹簧臂作用是当有物体挡在相机和角色中间时,把相机拉近到物体,使得角色可见。