教程链接
刚开始蓝图学习,跟着做了10集左右,发觉开始的部分有些已经要忘了,为了记忆和理解,在这里简单记录一些关键信息笔记。
Open World game CodeLikeMe 第一部分——第三人称游戏角色基础控制
1-4集、43-44集
一、主角导入与摄像机方向控制
- 为主角建立蓝图CH_Human,为character类,将外部获取的模型fbx文件导入,在CH_Human中选择对应mesh,调整正面对齐,加相机臂与相机。
2. 在世界设置中选择游戏模式(第三人称)、默认Pawn[1]。
3.摄像机方向控制:在CH_Human中使用第三人称默认mouse input,给机械臂加“使用Pawn控制旋转”,若不需要角色与摄像机同方向,则取消CH_Human组件最上层中默认细节-Pawn-使用控制器旋转Yaw。
二、主角移动
1.位置移动
在CH_Human中使用第三人称默认的movement input
2.移动动作
(1)导入主角动作[2](默认站立、左右行走、向前行走、向前奔跑),新建动作混合空间BSP_Freewalk。将空间横、纵轴(speed_side、speed_forward)与主角CH_Human中设定的走路最大速度(600)对应,按需求分grid,将不同动作放在对应速度上。
(2)新建主角动作蓝图BPA_Human,将混合空间BSP_Freewalk放入,将speed_side与speed_forward提升为变量。将BPA_Human赋给CH_Human。
(3)speed_side与speed_forward的获取:
在BPA_Human事件图表中
a. 当事件开始时,获取Pawn owner,类型转换为character(?),并提升为变量BP_Character。
b.事件更新时,首先检查BP_Character是否有效,若有效则获取BP_Character的速度、向前向量、向右向量,分别进行点乘,结果赋给speed_side与speed_forward。
(4)若需要角色面向运动的方向,则在CH_Human中 ,修改character moment细节中角色移动(旋转设置)-旋转朝向运动为true。
三、主角走跑切换、冲刺
1. 按键准备
项目设置-input,增加action mapping项ToggleRun和Sprint,分别关联Capslock和左shift键
2.走跑切换
在CH_Human中,获取ToggleRun事件输入,并创建bool变量running(默认为true)。当ToggleRun事件pressed,对running取非,根据取非结果设置character movement的最大速度。
3.冲刺
(1)增加主角动作混合空间BSP_Freewalk纵轴最大值(800),放入外部获取的疾跑动作资源。
(2)在CH_Human中,获取Sprint事件输入,并创建bool变量sprinting(默认为false)。
a. 当Sprint事件pressed,将sprinting设置为true,将character movement最大值设置为800。
b. 当Sprint事件released,将sprinting设置为false,将character movement最大值设置为600,并设置running为true。
4. 若需要速度渐进效果更明显,则可减小character movement中角色移动(通用设置)-最大加速度;若需要主角不急停,则可减小character movement中角色移动(行走)-制动降速行走和地面摩擦力。
四、角色跳跃与脚步声
1.跳跃
(1)在BPA_Human的混合空间与输出姿势之间增加插槽。
(2)导入跳跃动作资源,对动作创建蒙太奇,通过创建段落loop和land,划分出适合用于空中悬浮的循环部分,利用蒙太奇片段的播放链使动作从default到loop后,在loop段循环。
(3)在CH_Human中,获取Jump事件输入,当pressed发生,使用character自带功能jump,然后播放设置好的动画蒙太奇。再获取onlanded事件,播放动画蒙太奇,但以land作为开始段落名。
2. 脚步声
(1)在走、跑等动作中,对脚落地时刻增加通知footstep_l和footstep_r。(为了做成对于不同地面播放不同声音)
(2)新建蓝图接口BPI_Character,新建功能Footstep,增加bool型输入变量left_or_right。
(3)在BPA_Human中,获取footstep_l和footstep_r通知时,执行以BP_Character为目标的Footstep接口功能事件。
(4)导入若干脚步声[3],创建一个声音cue,可将若干脚步声random后输出给output,可调节output音量
(5)在CH_Human的类设置中,加入BPI_Character。在CH_Human中获取Footstep接口功能事件,当事件发生时,进行play sound at location事件,获取actor位置作为事件location输入,将脚步声cue作为sound输入
3. 声音随距离衰减
(1)在脚步声cue的衰减设置中,新建声音衰减文件Atten_footstep。打开文件,调节内部半径和衰减距离来控制声音的衰减。
五、主角蹲伏-43集
1.按键准备:在项目设置input中增加ToggleCrouch项,关联键盘按键C
2.导入外部蹲伏状态停止、前进、左走、右走动画,复制主角混合动作空间(更名为BSP_Freewalk)为BSP_Crouch,将走路和左右走动画替换成蹲伏状态走。
3.将BSP_Crouch放入BPA_Human中,原本的speedside和speedforward变量同时输入给BSP_Crouch。通过blend poses by bool混合输出到插槽,将active value提升为变量Is Crouched,调整混合时间。
4. 获取Is Crouched:
新建蓝图接口文件BPI_CharacterAnimation,新建接口函数ToggleCrouch,包含输入bool变量enable。在BPA_Human类在设置中增加该接口,并获取ToggleCrouch接口函数事件,将接口变量enable赋给Is Crouched。
5.获取接口enable:
在CH_hunman中,获取ToggleCrouch的键盘输入事件。拖入角色mesh,作为获取动画实例的目标输入,将结果作为ToggleCrouch接口函数的目标输入。新建bool变量crouching,默认为false,当ToggleCrouch pressed时,将crouching取非赋给crouching,再作为ToggleCrouch的变量输入,同时crouching作为判断条件,true时为character movement设置max walk speed为300,false时为600
六、调整蹲伏与其他动作关系-44集
1.接口准备:在BPI_Character中,增加函数ToggleRun、ToggleSprint、ToggleCrouch,每项都包含bool型输入变量enable;增加函数ToggleJump。
2. 接口输出关系
(1) 在CH_hunman的ToggleRun蓝图部分中,将ToggleRun pressed后的蓝图部分折叠为宏ToggleRun M,复制ToggleRun M,将接口功能事件ToggleRun的输出变量作为running判定的输入。
(2)对ToggleSprint接口功能的输出变量做判断,若true则执行sprint设为true,false则执行sprint设为false。
(3)将Crouch部分开始执行后的内容折叠为宏Crouch M,复制并将接口功能事件ToggleCrouch作为执行和输入。
(4)将接口功能Jump直接作为jump功能的执行发起方。
3. 接口输入端
(1)在Crouch M中,若crouching为true则执行enable为false的ToggleRun接口函数。
(2)在ToggleRun M中,若running为true则执行enable为false的ToggleCrouch接口函数。
(3)在sprinting部分,去掉原本的直接在设sprinting为false的状态下设置running变量为true,而是在sprinting取true时,执行enable为true的ToggleRun(目标为CH_Human)?
?此处有疑问,若取sprinting为true时执行enable为true的ToggleRun,则会在ToggleRun M中将running设为true,与之前相反,且若先冲刺、再按C、再松开冲刺后会出现潜行最高速度不符的问题,做了以下修改,似乎可以正常: