简介:UE4 的全名是 Unreal Engine 4,中文译为“虚幻引擎4”。UE4 是一款由 Epic Games 公司开发的开源、商业收费、学习免费的游戏引擎。
UE4 采用了目前最新的即时光迹追踪、HDR 光照、虚拟位移等新技术,而且能够每秒钟实时运算两亿个多边形运算,效能是目前“Unreal Engine”的 100 倍,而通过 NVIDIA 的 GeForce 6800 显示卡与“Unreal Engine 3”3D 引擎的搭配,可以实时运算出电影 CG 等级的画面,效能非常非常恐怖。
一, UE4 安装下载
前置条件: 安装UE4 ,VS2017 / VS2019
链接地址:http://c.biancheng.net/view/2549.html
1 下载地址: https://www.unrealengine.com/zh-CN/
2 打开官网之后点击下载 进入之后下滑点击点击下载启动程序
3 下载安装之后打开软件 进入虚拟引擎
4 安装 VS2017 / VS2019
安装时需要勾选
如果已经安装vs 但是没有添加这个选项 打开 软件之后 点击工具
5 选择版本之后下载安装 安装之后打开虚幻引擎 创建一个c++的新项目
这里需要注意一点,项目名称不能有中文,不然可能会出现BUG
6 打开Visual Studio 找到左上角 文件->打开Visual Studio
7 打开UE4点击左下角的“显示/隐藏资源面板”。
8 点击 “C++类” ,选中"GameProject" 文件夹,在右边的“资源面板”右键点击 “新建C++类”。
9 选中“GameModeBase”(游戏模式),点击“下一步”。 选择公有和私有 之后点击创建类即可
10. 同理 分别再创建 Character( 角色类)
PlayerController(控制器类 )
- 回到 VS 编辑器,在“内容浏览器”里面选择“内容(Content)”:
- 添加两个文件夹 “Assets” 以及在Assets新建一个“Maps”文件夹 之后在菜单栏点击保存关卡
11. 设置默认游戏以及关卡 回到 UE4 编辑器,点击左上角“编辑”,然后打开“项目设置”:
选择“地图&模式”:
设置好了之后,每次打开编辑器点击“Play(播放)”都会默认打开这个地图和这个游戏模式。
- 设置默认的角色和控制器和默认地图
打开 VS 编辑器, 打开“APlayingGameModeBase.h”文件,声明一个构造函数:
public:
//构造函数
APlayingGameModeBase();
在“APlayingGameModeBase.cpp”文件中创建构造函数实现,然后在 #include “PlayingGameModeBase.h” 头文件的下面添加
#include "PlayingController.h"
#include "PlayingCharacter.h"
之后在构造函数中添加以下代码:
APlayingGameModeBase::APlayingGameModeBase()
{
//设置默认角色类
DefulatPawnClass = APlayingCharacter::StaticClass();
//设置默认控制器类
PlayerControllerClass = APlayerController::StaticClass();
}
- 编译之后 打开UE4 点击开始 会发现动不了了 原因是没有添加视角移动的逻辑 接下来开始写
菜单-》编辑-》项目设置-》输入
之后添加六个按键输入
MoveForward : W
MoveBack : S
MoveLeft : A
MoveRight : D
Turn : 鼠标X
LookUp :鼠标Y
设置完成后,打开 VS 编辑器,在“PlayingCharacter.h”文件下声明 4 个函数:
void MoveForward(float val); //人物往前移动
void MoveBack(float val); //人物向后
void MoveRight(float val); //人物向右
void MoveLeft(float val); //人物向左
找到 .cpp 打开之后实现移动功能
void APlayingCharacter::MoveForward(float val)
{
AddMovementInput(GetActorForwardVector(), val);
}
void APlayingCharacter::MoveBack(float val)
{
AddMovementInput(-GetActorForwardVector(), val);
}
void APlayingCharacter::MoveRight(float val)
{
AddMovementInput(GetActorRightVector(), val);
}
void APlayingCharacter::MoveLeft(float val)
{
AddMovementInput(-GetActorRightVector(), val);
}
- GetActorForwardVector() 是在世界空间中从此 A 角色获取前向的向量,它获取的是 X 轴的向量。
- GetActorRightVector() 同上,它获取的是 Y 轴的向量。
13 在“SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)”函数里,我们添加 4 个按键绑定
void APlayingCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
//人物移动
Super::SetupPlayerInputComponent(PlayerInputComponent);
InputComponent->BindAxis("MoveForward", this, &APlayingCharacter::MoveForward);
InputComponent->BindAxis("MoveBack", this, &APlayingCharacter::MoveBack);
InputComponent->BindAxis("MoveRight", this, &APlayingCharacter::MoveRight);
InputComponent->BindAxis("MoveLeft", this, &APlayingCharacter::MoveLeft);
//人物视角
InputComponent->BindAxis("Turn", this, &APawn::AddControllerYawInput);
InputComponent->BindAxis("LookUp", this, &APawn::AddControllerPitchInput);
//人物跳跃
InputComponent->BindAction("Jump",IE_Pressed,this,&APlayingCharacter::JumpStart);
InputComponent->BindAction("Jump", IE_Released, this, &APlayingCharacter::JumpEnd);
}
- 在项目设置中 添加跳跃的按钮绑定
在“APlayingCharacter.cpp” 中添加跳跃的功能函数
//人物跳跃
void APlayingCharacter::JumpStart()
{
//如果是真的话,角色跳跃
bPressedJump = true;
}
void APlayingCharacter::JumpEnd()
{
//如果是假的话,结束跳跃
bPressedJump = false;
}
然后在在 SetupPlayerInputComponent 函数里面绑定按键输入:详情查看上方14 中的人物跳跃部分的代码