2021-08-01

教程链接

【UE4教程 附源码】1000集商业级ARPG开放世界游戏教程 | (Open World game CodeLikeMe)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

刚开始蓝图学习,跟着做了10集左右,发觉开始的部分有些已经要忘了,为了记忆和理解,在这里简单记录一些关键信息笔记。


Open World game CodeLikeMe 第一部分——第三人称游戏角色基础控制

1-4集、43-44集

一、主角导入与摄像机方向控制

  1. 为主角建立蓝图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、再松开冲刺后会出现潜行最高速度不符的问题,做了以下修改,似乎可以正常:

参考

  1. ^Pawn 是可那些由玩家或 AI 控制的所有 Actor 的基类。 Pawn 是玩家或 AI 实体在游戏场景中的具化体现。
  2. ^几个途径:epic上免费资源、mixamo网站
  3. ^几个途径:1. https://www.tosound.com/ 2.https://opengameart.org/ 3.https://www.ear0.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值