07_P61~P73ThePawnClass
61 Pawn Creation
Creating a Pawn Class
pawn 单位
创建一个pawn的c++类,并且创建基于这个pawn的蓝图
62 在创建的pawn蓝图中,使用C++创建一个胶囊体Capsule
在https://docs.unrealengine.com/5.1 中查看对应方法的类
63 Forward Declaration前置声明
only including what you need
64 Skeletal Mesh Component骨骼网格组件
Meshes That Have Skeletions
USkeletalMesh
USkeletalMeshComponent
与创建根组件相同
需要使用到USkeletalMeshComponent 类
首先声明一个USkeletalMeshComponent的指针
然后使用CreateDefaultSubobject 创建带SkeletalMeshComponent
最后使用SetupAttachment 将其与Capsule 也就是RootComponent关联上
在UE中,打开panw蓝图,设置brid的动画
然后设置动画
最后将pawn蓝图 放置在场景中, 运行就可以的到一个有动画的brid
65 Binding Inputs绑定输入
Assigning Axis Mappings
在虚幻中,游戏会为我们(Player)分配一个控制器(Acontroller)
用这个控制器,游戏可以知道“这个”是我们
游戏控制器可以控制pawn
我们如果需要控制鸟的话,则需要让控制器possess拥有鸟
注意 pawn可以被possess拥有,但是actor不可以
我们一旦possess了鸟,则鸟可以从我们设置的控制器那里获取我们的输入
首先需要编辑控制器
进入菜单“编辑” -> “项目设置”-> “引擎” -> “输入”
找到“轴映射”
添加W的按键映射
如果是已经导入了自带的第三人称模版 则有下面这些内容:

使用代码 设置默认玩家player0
然后我们在方法中 将设置的W映射名称与对应的函数方法 绑定起来 如下
并且在MoveForward()方法中,打印传入的value的值
执行后发现,当我们不按W的时候,输入为0,按下W后 ,输入为1,符合预期
66 Adding Movement Input添加输入事件
Moving Our Brid
使用AddMovementinput方法来触发移动
//还用了AddActorWorldOffset来实现移动
需要先判断Controller不为空,并且传入的value不为0
使用AddMovementinput ,需要在蓝图中添加FloatingPawnMovement的组件,来“识别”按键传入的值,并且使用FloatingPawnMovement组件,可以实现更丰富的移动效果
如果只是使用AddActorWorldOffset来进行移动,则更复杂的移动方式(比如加速度)则需要自己实现
67 Camera and Spring Arm相机和弹簧臂
Adding Camera and Spring Arm Components
在蓝图中添加摄像机和弹簧臂组件

C++里面创建弹簧臂组件和摄像机组件
在构造函数中初始化(绑定)弹簧臂和摄像机组件
68 Controller Input控制器的输入
Adding Rotation to the Controller

//X轴 围绕X轴旋转 &ACharacter::AddControllerRollInput
//Y轴 围绕Y轴旋转 &ACharacter::AddControllerPitchInput
//Z轴 围绕Z轴旋转 &ACharacter::AddControllerYawInput
使用蓝图实现左右 和上下旋转
首先在项目设置 输入中 添加鼠标的X轴 和Y轴
然后在pawn蓝图中,添加如下事件
其中,输入轴turn LookUp 是在上图中的设置名字

在C++中实现相同的功能
最后编译 就可以实现效果
在调试过程中 ,我们会发现一个圆球,这个是游戏模式自带的pawn:DefaultPawn

因为我们当前没有创建单独的游戏模式,当前使用的是系统自带的基本模式
这个圆球是自带的,所以会出现

69 Setting the Default Pawn设置默认pawn
Setting the default pawn for the level
创建一个蓝图类,选择游戏模式基础

打开蓝图,修改默认pawn为我们创建的pawn

70 小结