IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4学习笔记----使用C++之玩家输入控制Pawn -> 正文阅读

[游戏开发]UE4学习笔记----使用C++之玩家输入控制Pawn


源代码

新建Pawn

创建C++类

请添加图片描述

.h文件

配置变量属性

	// 将该变量开放给引擎编辑
	UPROPERTY(EditAnywhere)
		UStaticMeshComponent* OurVisibleComponent;

.cpp文件

实例化各类对象

// 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;

	// 设置当前的Pawn由哪个玩家控制
	AutoPossessPlayer = EAutoReceiveInput::Player0;

	// 创建可附加内容的虚拟根组件
	RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("One"));
	// 创建相机
	UCameraComponent* OurCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("Two"));
	// 创建可见对象
	OurVisibleComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Three"));
	// 将相机附加到根组件,
	// 偏移并旋转相机
	OurCamera->SetupAttachment(RootComponent);
	OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f));
	OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f));
	// 将可见对象附加到根组件
	OurVisibleComponent->SetupAttachment(RootComponent);
}

配置用户输入

设置输入表

请添加图片描述

.h文件

定义输入函数和相关变量


	// 用于接收输入的函数
	void MoveX(float Value);
	void MoveY(float Value);
	void StartG();
	void StopG();

	// 当前输入的变量
	FVector CurrentVelocity;
	bool bGrowing;

.cpp文件

  • 缩放代码
  • 移动代码
// 逐帧调用
void AMyPawn::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);


	// 根据bGrowign标志来进行增长和缩短
	{
		float CurrentScale = OurVisibleComponent->GetComponentScale().X;
		if (bGrowing)
		{
			// 增大
			CurrentScale += DeltaTime;
		}
		else
		{
			// 缩小
			CurrentScale -= (DeltaTime * 0.5f);
		}
		// 设置缩放的最小和最大
		CurrentScale = FMath::Clamp(CurrentScale, 1.0f, 2.0f);
		OurVisibleComponent->SetWorldScale3D(FVector(CurrentScale));
	}

	// 根据用户输入来进行pawn移动
	{
		if (!CurrentVelocity.IsZero())
		{
			FVector NewLocation = GetActorLocation() + (CurrentVelocity * DeltaTime);
			SetActorLocation(NewLocation);
		}
	}
}

将输入和Pawn进行绑定

#include "MyPawn.h"
// 相机组件
#include "Camera/CameraComponent.h"
// 静态网格组件
#include "Components/StaticMeshComponent.h"
// 输入头文件
#include "Components/InputComponent.h"

在回调函数中进行响应函数绑定

// 输入和函数进行绑定的回调
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

	// 将ParticleToggle按键的按下和松开的操作与函数进行绑定
	PlayerInputComponent->BindAction("ParticleToggle", IE_Pressed, this, &AMyPawn::StartG);
	PlayerInputComponent->BindAction("ParticleToggle", IE_Released, this, &AMyPawn::StopG);

	// 对两个轴的操作与函数进行绑定
	PlayerInputComponent->BindAxis("MoveForward", this, &AMyPawn::MoveX);
	PlayerInputComponent->BindAxis("MoveRight", this, &AMyPawn::MoveY);

}

响应函数用来修改变量

void AMyPawn::MoveX(float Value)
{
	// 以最大100单位/秒的速度进行前后移动
	CurrentVelocity.X = FMath::Clamp(Value, -1.0f, 1.0f) * 100.f;
}
void AMyPawn::MoveY(float Value)
{
	// 以最大100单位/秒的速度进行左右移动
	CurrentVelocity.Y = FMath::Clamp(Value, -1.0f, 1.0f) * 100.f;
}

void AMyPawn::StartG()
{
	bGrowing = true;
}
void AMyPawn::StopG()
{
	bGrowing = false;
}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:56:00  更:2022-03-04 15:56:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:35:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码