虚幻引擎5 Gameplay框架(一)

GamePlay概论与打包和批处理脚本

GamePlay简介与创建项目

  • GamePlay框架:用于设计游戏规则,组织和管理游戏核心逻辑、规则以及交互的一套结构化体系。
    • Default Pawn Class:定义角色行为逻辑,接收玩家控制器的输入,一般都写在这个类中
    • HUD Class:告诉游戏玩家目前的状态,HUD主要用于管理UUserWidget
    • Player Controller Class:主要控制Pawn的Actor,本质上就是代表人类的意愿
      • 相机管理
      • 输入系统
      • Player Controller与Player的关联
      • 管理HUD
      • 网络语言通话功能
    • Game State Class:游戏层面的数据变化,例如:游戏是否开始了,阵营得分,存放所有玩家的PlayerState。随关卡的生成销毁
    • Player State Class:用于存放每个玩家在游戏中状态的类,玩家自己的数据。随关卡的生成销毁
    • Spectator Class:Spectator类通常指的是游戏中的观战者模式相关的类
      在这里插入图片描述
  • 虚幻引擎3C概念:Controller、Camera、Character:逻辑闭环
    • Controller:用于接收来自输入设备的输入信号,Controller并不直接控制角色的物理运动,而是通过与对应的Pawn(可能是Character类型)进行交互,发送命令和更新状态。主要用于控制Pawn,通过输入信号又可以控制玩家角色,然后配合相机,从游戏获取信息,控制Character的反馈。
    • Camera:实时为玩家显示游戏中画面。设置Camera与Controller配合,可以实现第一人称视角(FPV)、第三人称视角(TPV)和其他多种视角模式,同时也可以调整相机的视野、远近裁剪面、缩放等因素,以增强玩家的游戏体验。
    • Character:游戏中代表的玩家或者非玩家实体对象(AI控制)。Character 类通常是从 Pawn 类派生而来,Character通常带有骨骼动画系统支持,能够进行复杂的动作表现,并且与物理系统相结合,进行运动和碰撞检测。
综上所述,“3C”构成了虚幻引擎中角色控制和视觉表达的核心要素,它们相互协同工作,共同实现了游戏中角色的交互行为及玩家的视觉感知。

模版代码:Character初始化构造

  • GetCapsuleComponent()->InitCapsuleSize(42.f, 96.0f);
    • 初始化胶囊体的宽高度
    • 头文件:#include “Components/CapsuleComponent.h”
  • 让相机不做旋转
 	bUseControllerRotationPitch = false;
	bUseControllerRotationYaw = false;
	bUseControllerRotationRoll = false;
  • GetCharacterMovement()->bOrientRotationToMovement= true;
    • 角色在输入方向时,进行旋转
    • 头文件:#include “GameFramework/CharacterMovementComponent.h”
    • 如果是这里是false,就会反方向行走
      请添加图片描述
  • GetCharaterMovement()->RotationRate= FRotator(0.0f, 500.0f, 0.0f);
    • 控制角色转向时的速率
	//跳跃高度
	GetCharacterMovement()->JumpZVelocity = 700.f;
	//跳跃向前浮动移动速率
	GetCharacterMovement()->AirControl = 0.35f;
	//最大移动速度
	GetCharacterMovement()->MaxWalkSpeed = 500.f;
	//以最小模拟摇杆倾斜行走时,我们应该加速到的地面速度
	GetCharacterMovement()->MinAnalogWalkSpeed = 20.f;
	//行走时减速,不加加速度。这是一个恒定的反作用力,它直接使速度降低一个恒定值
	GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;
  • CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT(“CameraBoom”));
    • 创建一个相机臂组件
    • 头文件:#include “GameFramework/SpringArmComponent.h”
  • CreateDefaultSubobject:这是一个模版函数
	template<class TReturnType>
	TReturnType* CreateDefaultSubobject(FName SubobjectName, bool bTransient = false)
	{
   
   
		UClass* ReturnType = TReturnType::StaticClass();
		return static_cast<TReturnType*>(CreateDefaultSubobject(SubobjectName, ReturnType, ReturnType, /*bIsRequired =*/ true, bTransient));
	}
  • 相机臂就可以理解为一个自拍杆,这样就可以查看角色的最佳角度
//附加到根组件上
CameraBoom->SetupAttachment(RootComponent);
//相机臂长度
CameraBoom->TargetArmLength = 400.0f;
//打开相机臂的旋转,让控制器控制相机臂,之前让相机不做旋转,因为相机被相机臂控制
//这里就像自拍时,我们借助一个自拍杆来更好调整相机角度
CameraBoom->bUsePawnControlRotation = true; 
  • FollowCamera = CreateDefaultSubobject(TEXT(“FollowCamera”));
    • 创建相机组件
    • 头文件:#include “Camera/CameraComponent.h”
//将摄像机固定在吊杆的末端,让吊杆调整到与控制器方向相匹配的位置
FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName); 
/*
让相机不相对于手臂旋转,即便这里是true也无妨, 因为最终还是根据相机臂的旋转进行。
除非相机臂的旋转是false,那这里为true就会进行以相机为中心进行旋转
*/
FollowCamera->bUsePawnControlRotation = false;

模版代码:增强输入逻辑流程

  • 增强输入系统是一个插件,首先我们就得在项目中添加增强输入这个插件
    在这里插入图片描述
  • 然后我们要区分行为与映射上下文
    • UInputMappingContext:映射上下文,理解是管理行为的管理员
    • UInputAction:理解为行为操作
	/** MappingContext */
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
	class UInputMappingContext* DefaultMappingContext;

	/** Jump Input Action */
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
	class UInputAction* JumpAction
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值