《UE5_C++多人TPS完整教程》学习笔记56 ——《P57 未装备武器的蹲伏(Crouch Unequipped)》
本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P57 未装备武器的蹲伏(Crouch Unequipped)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 发布在 Udemy 上的课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
文章目录
- P57 未装备武器的蹲伏(Crouch Unequipped)
- 57.1 完善未装备武器下的蹲伏
- 57.2 Summary
P57 未装备武器的蹲伏(Crouch Unequipped)
本节课我们将进入枪战部分的学习,完善人物角色在未装备武器的蹲伏状态及动画。
57.1 完善未装备武器下的蹲伏
-
在动画蓝图 “
BlasterAnimBP
” 中打开 “Unequipped
” 状态机,进入 “IdleWalkRun
” 状态节点编辑界面,如下图所示修改蓝图,这样人物角色在未装备武器时也可以进行蹲伏行走。
-
我们注意到人物角色在未装备武器时进行转向,会有一定时间的延迟,我们可以在人物角色蓝图 “
BP_BlasterCharacter
” 选中移动组件,在右侧细节面板 “角色移动(旋转设置)”(CHARACTER MOVEMENT(ROTATION SETTINGS))选项卡下找到 “旋转速率”,将分量 “Z
”的值(绕 Z 轴旋转的 Yaw 值)改为 850。
-
我们也可以使用 C++ 代码,在 “
BlasterCharacter.cpp
” 的构造函数 “ABlasterCharacter()
” 中对旋转速率的默认值进行设置。/*** BlasterCharacter.cpp ***/...// Sets default values ABlasterCharacter::ABlasterCharacter() {// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;...GetCapsuleComponent()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); // 让人物角色的胶囊体组件忽略来自摄像机碰撞通道的所有检测GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); // 让人物角色的骨骼网格体组件忽略来自摄像机碰撞通道的所有检测/* P57 未装备武器的蹲伏(Crouch Unequipped)*/GetCharacterMovement()->RotationRate = FRotator(0.f, 850.f, 0.f); // 设置旋转速率/* P57 未装备武器的蹲伏(Crouch Unequipped)*/TurningInPlace = ETurningInPlace::ETIP_NotTurning; // 默认转身状态为不转身NetUpdateFrequency = 66.f; // 设置网络更新频率MinNetUpdateFrequency = 33.f; // 设置最小网络更新频率 }...
-
我们在未装备武器时进行蹲伏,如果按下空格键,我们的人物角色是没有反应的,因此可以覆写跳跃的回调函数 “
Jump()
”。/*** BlasterCharacter.h ***/...UCLASS() class BLASTER_API ABlasterCharacter : public ACharacter {GENERATED_BODY()...protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;// 与轴映射相对应的回调函数void MoveForward(float Value); // 人物角色前进或后退void MoveRight(float Value); // 人物角色左移或右移void Turn(float Value); // 人物角色视角左转或右转void LookUp(float Value); // 人物角色俯视或仰视// 与动作映射相对应的回调函数void EquipButtonPressed(); // 人物角色装备武器void CrouchButtonPressed(); // 人物角色蹲伏void AimButtonPressed(); // 人物角色开始瞄准void AimButtonReleased(); // 人物角色停止瞄准void AimOffset(float DeltaTime); // 人物角色瞄准偏移/* P57 未装备武器的蹲伏(Crouch Unequipped)*/virtual void Jump() override; // 人物角色跳跃/* P57 未装备武器的蹲伏(Crouch Unequipped)*/...};
/*** BlasterCharacter.cpp ***/.../* P57 未装备武器的蹲伏(Crouch Unequipped)*/ void ABlasterCharacter::Jump() {if (bIsCrouched) { // 如果在蹲伏UnCrouch(); // 起身}else { // 如果不在蹲伏,说明在站立状态Super::Jump(); // 跳跃} } /* P57 未装备武器的蹲伏(Crouch Unequipped)*/...
-
我们可以根据个人喜好,调整人物角色的瞄准行走速度和蹲伏行走速度。
57.2 Summary
本节课我们完善了人物角色未装备武器下的动画,通过修改状态机 “Unequipped
” 下 “IdleWalkRun
” 的状态蓝图,人物角色在未装备武器的情况下也能够进行蹲伏行走,我们还设置了人物角色的旋转速率,使得人物角色在转向时延迟减少,转身更丝滑。接着,我们覆写跳跃的回调函数 “Jump()
”,这样人物角色在未装备武器时进行蹲伏时,如果按下跳跃键,我们的人物角色可以起身。最后我们可以根据个人喜好,调整人物角色的瞄准行走速度和蹲伏行走速度。