• 【UE5 C++基础 06】角色控制基础


    游戏模式 GameMode

    游戏模式定义这些游戏的规则。这些规则包括游戏启动时将生成的默认Pawn。你需要设置规则生成你已经创建的玩家角色。

    让新建的GameMode生效,需要在项目设置中的地图与模式,设置Default GameMode。

    Default Pawn Class

    默认的Pawn
    由于Character是Pawn的子类,所以这里也可以设置Character
    Character是比Pawn多了一些移动组件的子类。

    角色控制

    相机横向转动 APawn::AddControllerYawInput
    相机纵向转动 APawn::AddControllerPitchInput
    角色向前移动

    void APlayerCharacter::MoveForward(float AxisValue)
    {
        if ((Controller != nullptr) && (AxisValue != 0.0f))
        {
            // 找出向前方向
            const FRotator Rotation = Controller->GetControlRotation();
            const FRotator YawRotation(0, Rotation.Yaw, 0);
    
            // 获取向前矢量
            const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
            AddMovementInput(Direction, AxisValue);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    角色横向转动

    void APlayerCharacter::MoveRight(float AxisValue)
    {
        if ((Controller != nullptr) && (AxisValue != 0.0f))
        {
            // 找出向右方向
            const FRotator Rotation = Controller->GetControlRotation();
            const FRotator YawRotation(0, Rotation.Yaw, 0);
    
            // 获取向右矢量 
            const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
    
            // 添加该方向动作
            AddMovementInput(Direction, AxisValue);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    角色跳跃 ACharacter::Jump ACharacter::StopJumping

    混合空间

    混合空间是一种资产,允许混合多个动画或姿势,方法是将其绘制到一维或二维图表中。然后,该图表可以在动画蓝图中进行引用,其中混合通过Gameplay输入或其他变量进行控制。通过使用混合空间,几乎所有类型的混合布局都可以用于你的动画。

    先决条件

    你的项目有一个 骨骼网格体(Skeletal Mesh) ,其中导入了各种方向性或类似 动画序列(Animation Sequences)

    混合空间概述

    混合空间是一种资产,你可以在其中沿图表上的各个点指定动画,称为 示例(samples) 。总体动画通过基于每个轴的输入值在图表上的点之间混合来计算。例如,可以创建一个在方向性移动和空闲动画之间混合的移动系统。

    混合空间创建和类型

    有不同类型的混合空间,它们在资产编辑器中或针对它们在动画蓝图中的使用方式提供了不同的功能。

    以下混合空间类型可以通过点击"内容浏览器(Content Browser)"中的 添加(+)(Add (+)) 按钮并从 动画(Animation) 菜单进行选择来创建:

    • 瞄准偏移(Aim Offset)

    • 瞄准偏移1D(Aim Offset 1D)

    • 混合空间(Blend Space)

    • 混合空间1D(Blend Space 1D)

    混合空间类型

    常规混合空间是混合空间的基本种类,用于提供沿图表混合动画的所有主要功能。它们旨在作为基础层在动画蓝图中进行引用,次要动画将从中延续。

    瞄准偏移类型

    瞄准偏移是混合控件,旨在包含网格体空间叠加动画作为其示例。通常,这些用于创建武器或其他"看向"瞄准混合空间。瞄准偏移动画蓝图节点旨在随法线轴输入一起接收输入姿势

    请参阅瞄准偏移页面,了解有关如何使用它们的更多信息。

    角色使用瞄准偏移将武器瞄准鼠标或控制器的方向。 在动画过程中,瞄准偏移的结果与其他动作(如奔跑、行走、跳跃等)混合在一起,使角色从各个方向上看起来都很平滑。

    瞄准偏移背后的关键概念是,它们被设计成与现有动画进行额外混合。因此,打个比方,如果您使用瞄准偏移来让角色瞄准一个武器,您会想要确保角色上的其他运动不会妨碍那个附加运动。换句话说,您的奔跑、站立、跳跃等操作应该具有相对刚性的手臂,这样它们就可以通过瞄准偏移进行额外的控制。

    在很多方面,瞄准偏移就像一个混合空间。因此,在使用混合空间之前,最好先对它们有一个透彻的了解。

    1D

    混合空间和瞄准偏移都还支持单轴(1D)变体。通常,这些混合空间在你只需要单个轴混合时使用。对于混合空间1D或瞄准偏移1D的情况,图表仅提供水平轴。

    尽管1D混合空间可用,但普通2D图表也可用于一维方式,方法是仅将单个轴用于你的示例放置。这样一来,你可以根据需要将混合空间从1D扩展到2D。

    混合空间设置

    创建并打开你的混合空间类型后,请继续进行以下设置。

    定义轴名称和范围

    在大部分情况下,你需要定义混合空间中使用的轴的名称和值范围。为此,请导航至 资产细节(Asset Details) 面板,并更改位于 轴设置(Axis Settings) 类别中的以下属性:

    • 名称(Name)

    • 最小轴值(Minimum Axis Value)

    • 最大轴值(Maximum Axis Value)

    根据混合空间的类型,如果你要创建瞄准偏移,并且希望网格匹配旋转值,那么你可能需要使用不同的值比例,例如 -90 到 90 或 -180 到 180。

    将动画添加到图表

    你可以将动画从 资产浏览器(Asset Browser)内容浏览器(Content Browser) 拖到图表中,以向图表填充动画。按住 Shift 键将使动画对齐到网格点,这对于对齐很有用。根据你要创建的混合空间种类,这些可以是循环动画或静态姿势。

    由于1D混合空间只有一个轴用于输入,你只能沿该单个轴应用动画。

    在这个例子中,垂直和水平轴分别映射到方向和速度。然后,将设置多个基于周期的动画以基于这些输入的值进行相应混合,生成你在游戏内看到的最终姿势。

    在动画蓝图中引用

    完成图表后,你可以引用和操控动画蓝图中的混合空间。要添加混合空间,请右键点击 AnimGraph 并找到你的混合空间。你还可以从 内容浏览器(Content Browser) 将其拖入图表中。这样做会创建引用该资产的 混合空间播放器

    请参阅使用混合空间页面,了解有关使用动画蓝图中的混合空间的更多信息。

  • 相关阅读:
    SpringBoot缓存之Ehcache详解
    生成指定长度的随机数字,用对方法精准提效数10倍!
    数据结构-插入排序实现
    css知识学习系列(3)-每天10个知识点
    十七、Linux的组管理
    64位整数高低位的数据获取与赋值操作探讨
    阿里云通过音视频url获取字幕内容
    Taro模拟table表格搭配react实现方式
    【perl】环境搭建
    详解Istio服务治理技术及环境搭建
  • 原文地址:https://blog.csdn.net/AiTanXiing/article/details/125502383