1.首先创建一个C++的Pawn类
右键点击Public,选择新建C++类
选择Pawn,然后点击下一步
命名后,点击创建
创建完毕,双击打开MyPawn
2.在MyPawn.h中添加如下代码:
UPROPERTY(EditAnywhere)
class UStaticMeshComponent* MeshComponent; //静态网格UPROPERTY(EditAnywhere)
class UCameraComponent* Camera; //摄像机
3.在MyPawn.cpp中添加如下代码:
这里引用MyPawn.h的相对路径出错,于是直接改成绝对路径
#include "D:/UE4/UE4Project/CTestProject/Source/CTestProject/Public/MyPawn.h"
#include "Components/StaticMeshComponent.h"
#include "Camera/CameraComponent.h"// Sets default values
AMyPawn::AMyPawn()
{// Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent")); //创建一个根组件MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent")); //创建一个Mesh组件MeshComponent->SetupAttachment(GetRootComponent()); //将Mesh组件绑定在根组件下面Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera")); //创建一个摄像机组件Camera->SetupAttachment(GetRootComponent()); //将摄像机组件绑定在根组件下面Camera->SetRelativeLocation(FVector(-300.f, 0, 300)); //设置摄像机的相对位置Camera->SetRelativeRotation(FRotator(-45.f, 0, 0)); //设置摄像机的相对旋转}
最后记得生成解决方案
4.新建一个蓝图
选择MyPawn
命名为BP_MyPawn
双击打开BP_MyPawn,发现根组件已经绑定了在代码中添加的两个组件
5.给静态网格体赋予一个方块形状:
6.将蓝图拖入视口中
现在游戏一运行是第三人称角色模板的摄像机的镜头,那么如何改成让游戏一运行就显示与方块绑定的那个摄像机的镜头呢?
1.新建一个C++类
2.选择 游戏模式基础
3.命名为ugdcGameModeBase后,创建类
打开后基本是一个空的游戏模式:
4.新建一个蓝图去继承ugdcGameModeBase这个游戏模式:
命名为BP_MyPawnGameMode
双击打开BP_MyPawnGameMode 来更改游戏模式:
只需更改默认的Pawn类为BP_MyPawn:
更改后记得编译
5.在世界场景设置中更改游戏覆盖模式为BP_MyPawnGameMode
6.将场景中的第三人称角色模板中的小人移除,再把场景中的BP_MyPawn移除
7.加一个玩家出生点:
运行游戏,发现在出生点出出现我们的主角——方块: