六一的部落格


关关难过关关过,前路漫漫亦灿灿。




概览

-
玩家控制的游戏角色 Character
游戏角色控制器 PlayerController
关卡设置 GameModeBase: DefaultPawnClass, PlayerControllerClass
第三视角 CameraComponent

创建Character类和PlayController类

虚幻编辑器

  1. 创建 Player/STUBaseCharacter
    • ACharacter


    • 公有类


  2. 创建 Player/STUPlayerController
    • APlayerController


    • 公有类


设置头文件搜索路径

  • 源文件路径已包含上级文件夹

    ShootThemUp: Player/STUBaseCharacter.cpp


  • 设置头文件搜索路径之后,可以不指明上级文件夹

    ShootThemUp: ShootThemUp.Build.cs

    1PublicIncludePaths.AddRange(new string[] { "ShootThemUp/Public/Player" });

设置STUGameModeBase使用STUBaseCharacter和STUPlayController

C++

-
DefaultPawnClass 游戏角色类型
PlayerControllerClass 游戏角色控制器类型
  1. 添加默认构造函数声明

    ShootThemUp: STUGameModeBase.h
  2. 设置默认游戏角色类型和游戏角色控制器类型

    ShootThemUp: STUGameModeBase.cpp
     1#include "Player/STUBaseCharacter.h"
     2#include "Player/STUPlayerController.h"
     3
     4// 以下亦正确
     5// #include "STUBaseCharacter.h"
     6// #include "STUPlayerController.h"
     7
     8ASTUGameModeBase::ASTUGameModeBase()
     9{
    10    DefaultPawnClass = ASTUBaseCharacter::StaticClass();
    11    PlayerControllerClass = ASTUPlayerController::StaticClass();
    12}

为游戏角色添加第三视角

C++

为STUBaseCharacter添加UCameraComponent类型成员

  1. 添加CameraComponent类型成员

    ShootThemUp: Player/STUBaseCharacter.h
    1// 前向声明
    2class UCameraComponent;
    3
    4// protected
    5UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
    6UCameraComponent *CameraComponent;
  2. 初始化组件

    ShootThemUp: Player/STUBaseCharacter.cpp
    1#include "Camera/CameraComponent.h"
    2
    3// 默认构造函数
    4CameraComponent = CreateDefaultSubobject<UCameraComponent>("CameraComponent");
    5CameraComponent->SetupAttachment(GetRootComponent());
  3. 编译ShootThemUp

设置关卡使用蓝图类

虚幻编辑器


查看STUGameModeBase使用的类型



创建基于STUGameModeBase的蓝图类

  1. 选中C++ Classes/ShootThemUp/STUGameModeBase右键, 选择Create blueprint class based on STUGameModeBase

  2. 保存到 Content/ , 命名为 BP_STUBaseGameBase



创建基于STUBaseCharacter和STUPlayerController的蓝图类

  1. 创建 Content/Player 文件夹

  2. 创建 BP_STUBaseCharacterBP_STUPlayerController , 保存到 Content/Player/



设置关卡使用BP_STUGameModeBase, 并设置BP_STUGameModeBase使用BP_STUBaseCharacter和BP_STUPlayerController



为游戏角色绑定模型

虚幻编辑器

BP_STUBaseCharacter


查看组件信息


说明
Capsule Component 根组件,实现碰撞检测
Arrow Component 角色的前进方向
Camera Component 第三视角
Mesh 骨骼网格体(Skeletal Mesh)
Character Movement 纯逻辑组件,负责游戏角色运动

设置蓝图类编译成功自动保存



为Mesh组件绑定骨骼网格体

  1. Mesh 绑定 HeroTPP


  2. 材质自动应用 HeroTPP


    若材质显示不正确, 需参照ShooterGame项目的纹理设置做相应调整

  3. 移动模型到合适位置,旋转模型与前进方向一致


  4. 实现第三视角

    分离 Camera ComponentMesh 组件


  5. 效果图


为游戏角色绑定模型



概览

-
玩家控制的游戏角色 Character
游戏角色控制器 PlayerController
关卡设置 GameModeBase: DefaultPawnClass, PlayerControllerClass
第三视角 CameraComponent

创建Character类和PlayController类

虚幻编辑器

  1. 创建 Player/STUBaseCharacter
    • ACharacter


    • 公有类


  2. 创建 Player/STUPlayerController
    • APlayerController


    • 公有类


设置头文件搜索路径

  • 源文件路径已包含上级文件夹

    ShootThemUp: Player/STUBaseCharacter.cpp


  • 设置头文件搜索路径之后,可以不指明上级文件夹

    ShootThemUp: ShootThemUp.Build.cs

    1PublicIncludePaths.AddRange(new string[] { "ShootThemUp/Public/Player" });

设置STUGameModeBase使用STUBaseCharacter和STUPlayController

C++

-
DefaultPawnClass 游戏角色类型
PlayerControllerClass 游戏角色控制器类型
  1. 添加默认构造函数声明

    ShootThemUp: STUGameModeBase.h
  2. 设置默认游戏角色类型和游戏角色控制器类型

    ShootThemUp: STUGameModeBase.cpp
     1#include "Player/STUBaseCharacter.h"
     2#include "Player/STUPlayerController.h"
     3
     4// 以下亦正确
     5// #include "STUBaseCharacter.h"
     6// #include "STUPlayerController.h"
     7
     8ASTUGameModeBase::ASTUGameModeBase()
     9{
    10    DefaultPawnClass = ASTUBaseCharacter::StaticClass();
    11    PlayerControllerClass = ASTUPlayerController::StaticClass();
    12}

为游戏角色添加第三视角

C++

为STUBaseCharacter添加UCameraComponent类型成员

  1. 添加CameraComponent类型成员

    ShootThemUp: Player/STUBaseCharacter.h
    1// 前向声明
    2class UCameraComponent;
    3
    4// protected
    5UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
    6UCameraComponent *CameraComponent;
  2. 初始化组件

    ShootThemUp: Player/STUBaseCharacter.cpp
    1#include "Camera/CameraComponent.h"
    2
    3// 默认构造函数
    4CameraComponent = CreateDefaultSubobject<UCameraComponent>("CameraComponent");
    5CameraComponent->SetupAttachment(GetRootComponent());
  3. 编译ShootThemUp

设置关卡使用蓝图类

虚幻编辑器


查看STUGameModeBase使用的类型



创建基于STUGameModeBase的蓝图类

  1. 选中C++ Classes/ShootThemUp/STUGameModeBase右键, 选择Create blueprint class based on STUGameModeBase

  2. 保存到 Content/ , 命名为 BP_STUBaseGameBase



创建基于STUBaseCharacter和STUPlayerController的蓝图类

  1. 创建 Content/Player 文件夹

  2. 创建 BP_STUBaseCharacterBP_STUPlayerController , 保存到 Content/Player/



设置关卡使用BP_STUGameModeBase, 并设置BP_STUGameModeBase使用BP_STUBaseCharacter和BP_STUPlayerController



为游戏角色绑定模型

虚幻编辑器

BP_STUBaseCharacter


查看组件信息


说明
Capsule Component 根组件,实现碰撞检测
Arrow Component 角色的前进方向
Camera Component 第三视角
Mesh 骨骼网格体(Skeletal Mesh)
Character Movement 纯逻辑组件,负责游戏角色运动

设置蓝图类编译成功自动保存



为Mesh组件绑定骨骼网格体

  1. Mesh 绑定 HeroTPP


  2. 材质自动应用 HeroTPP


    若材质显示不正确, 需参照ShooterGame项目的纹理设置做相应调整

  3. 移动模型到合适位置,旋转模型与前进方向一致


  4. 实现第三视角

    分离 Camera ComponentMesh 组件


  5. 效果图