UC++常用语句示例

Actor操作

        移动

FVector CurrentLocation = GetActorLocation();
// 在X轴上增加移动
CurrentLocation.X += MoveSpeed * DeltaTime;
// 应用新的位置
SetActorLocation(CurrentLocation);
AddActorLocalOffset(FVector(MoveSpeed * DeltaTime, 0.0f, 0.0f));
// 获取当前相对位置
FVector CurrentRelativeLocation = GetActorLocation();
// 在X轴上增加相对移动
CurrentRelativeLocation.X += MoveSpeed * DeltaTime;
// 应用新的相对位置
SetActorRelativeLocation(CurrentRelativeLocation);
// 获取当前位置
FVector CurrentLocation = GetActorLocation();
// 在X轴上增加移动
CurrentLocation.X += MoveSpeed * DeltaTime;
// 使用插值实现平滑移动
FVector NewLocation = FMath::VInterpTo(GetActorLocation(), CurrentLocation, DeltaTime, 5.0f);
// 应用新的位置
SetActorLocation(NewLocation);
// 获取玩家控制器
APlayerController* PlayerController = GetWorld()->GetFirstPlayerController();if (PlayerController)
{// 获取玩家输入float ForwardInput = 0.0f;PlayerController->InputComponent->GetAxisValue("MoveForward", ForwardInput);float RightInput = 0.0f;PlayerController->InputComponent->GetAxisValue("MoveRight", RightInput);// 构建移动方向FVector MoveDirection = FVector(ForwardInput, RightInput, 0.0f).GetSafeNormal();// 在本地坐标系上根据输入控制移动AddActorLocalOffset(MoveDirection * MoveSpeed * DeltaTime);
}

 

         旋转

FRotator CurrentRotation = GetActorRotation();
CurrentRotation.Yaw += RotationSpeed * DeltaTime;
SetActorRotation(CurrentRotation);
//
SetActorRelativeRotation(CurrentRotation);
//
AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaTime, 0.0f));
// 获取当前四元数旋转
FQuat CurrentRotationQuat = GetActorQuat();
// 创建一个Quat,表示绕Z轴的旋转
FQuat RotationQuat = FQuat(FRotator(0.0f, RotationSpeed * DeltaTime, 0.0f));
// 将当前旋转与新旋转相乘
FQuat NewRotationQuat = CurrentRotationQuat * RotationQuat;
// 应用新的旋转
SetActorRotation(NewRotationQuat.Rotator());
// 获取当前旋转
FRotator CurrentRotation = GetActorRotation();
// 在Yaw轴上增加旋转
CurrentRotation.Yaw += RotationSpeed * DeltaTime;
// 使用插值实现平滑旋转
FRotator NewRotation = FMath::RInterpTo(GetActorRotation(), CurrentRotation, DeltaTime, 5.0f);
// 应用新的旋转
SetActorRotation(NewRotation);
// 获取玩家控制器
APlayerController* PlayerController = GetWorld()->GetFirstPlayerController();if (PlayerController)
{// 获取玩家输入float YawInput = 0.0f;PlayerController->InputComponent->GetAxisValue("YawAxis", YawInput);// 在Yaw轴上根据输入控制旋转FRotator NewRotation = GetActorRotation() + FRotator(0.0f, YawInput * RotationSpeed * DeltaTime, 0.0f);// 应用新的旋转SetActorRotation(NewRotation);
}

 组件操作

        组件创建

CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
CameraBoom->SetupAttachment(RootComponent);
//
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName);

        组件查找

//名称查找
UBoxComponent* BoxComponent = Cast<UBoxComponent>(MyActor->GetComponentByName(TEXT("BoxComponent")));
//类型查找
UBoxComponent* BoxComponent = Cast<UBoxComponent>(MyActor->GetComponentByClass(UBoxComponent::StaticClass()));
//标签查找
TArray<UActorComponent*> Components;
MyActor->GetComponentsByTag(UIText::StaticClass(), TEXT("MyTag"), Components);

时间获取:

GetWorld()->GetTimeSeconds();
GetWorld()->TimeSince(18.6825);

定时器操作

GetWorldTimerManager().SetTimer(TimerHandle_Interaction,this,&ACSTutorialCharacter::Interact,TargetInteractable->InteractableData.InteractionDuration,false);
GetWorldTimerManager().ClearTimer(TimerHandle_Interaction);
GetWorldTimerManager().IsTimerActive(TimerHandle_Interaction)

事件绑定

//Jumping
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Triggered, this, &ACharacter::Jump);
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
//Moving
EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ACSTutorialCharacter::Move);
//Looking
EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ACSTutorialCharacter::Look);
//Interacting
EnhancedInputComponent->BindAction(InteractAction, ETriggerEvent::Started, this, &ACSTutorialCharacter::BeginInteract);
EnhancedInputComponent->BindAction(InteractAction, ETriggerEvent::Completed, this, &ACSTutorialCharacter::EndInteract);

 功能调试

        调试绘制

DrawDebugLine(GetWorld(), TraceStart, TraceEnd, FColor::Red, false, 1, 0, 1);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql清空表数据后如何让自增ID仍从1开始

有2种方法&#xff1a; 1、清空表时使用truncate命令&#xff0c;而不用delete命令 truncate test; 使用truncate命令的好处&#xff1a; 1&#xff09;、速度快 2&#xff09;、可以对自增ID进行重排&#xff0c;使自增ID仍从1开始计算 2、清空表数据后&#xff0c;使用alter…

Android 11 访问 Android/data/或者getExternalCacheDir() root方式

前言&#xff1a; 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…

20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式

20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式 2024/2/2 19:43 【结论&#xff1a;在Ubuntu20.04.6下&#xff0c;确认large模式识别7分钟中文视频&#xff0c;需要356447.78 ms&#xff0c;也就是356.5秒&#xff0c;需要大概5分钟&#xff01;效率太差&#xff01;】 …

CleanMyMac2024如何识别并清理垃圾文件?

CleanMyMac识别并清理垃圾文件的过程主要依赖于其强大的扫描功能和智能算法。以下是具体的步骤&#xff1a; 扫描垃圾文件&#xff1a;首先&#xff0c;用户需要打开CleanMyMac软件&#xff0c;并点击“智能扫描”功能。然后&#xff0c;软件将开始自动扫描Mac系统上的各种垃圾…

微信小程序(基本操作)

概念&#xff1a; 小程序&#xff1a;就是小程序&#xff0c;mini program。现在市面上有微信小程序&#xff0c;百度智能小程序等等。 微信小程序&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了…

课时16:本地变量_普通变量

2.2.2 普通变量 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 变量分类 所谓的本地变量就是&#xff1a;在当前系统的某个环境下才能生效的变量&#xff0c;作用范围小。本地变量按照变量值的生成方式包含两种&#xff1a;普通…

5-4、S加减单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720&#xff0c;其中加减速各90 加速段&#xff1a;加速类型&#xff1a;S曲线  加速角度&#xff1a;角度为90  起步速度…

CSS太极动态图

CSS太极动态图 1. 案例效果 我们今天学习用HTML和CSS实现动态的太极&#xff0c;看一下效果。 2. 分析思路 太极图是由两个旋转的圆组成&#xff0c;一个是黑圆&#xff0c;一个是白圆。实现现原理是使用CSS的动画和渐变背景属性。 首先&#xff0c;为所有元素设置默认值为0…

Topaz Photo AI for Mac v2.3.1 补丁版人工智能降噪软件无损放大

想要将模糊的图片变得更加清晰&#xff1f;不妨试试Topaz Photo AI for Mac 这款人工智能、无损放大软件。Topaz Photo AI for Mac 一款强大的人工智能降噪软件&#xff0c;允许用户使用复杂的锐化算法来提高图像清晰度&#xff0c;还包括肖像编辑选项&#xff0c;如面部重塑、…

Visual Studio 2010+C#实现信源和信息熵

1. 设计要求 以图形界面的方式设计一套程序&#xff0c;该程序可以实现以下功能&#xff1a; 从输入框输入单个或多个概率&#xff0c;然后使用者可以通过相关按钮的点击求解相应的对数&#xff0c;自信息以及信息熵程序要能够实现马尔可夫信源转移概率矩阵的输入并且可以计算…

Python系列(10)—— 逻辑运算符

在Python中&#xff0c;逻辑运算符被用于连接布尔表达式&#xff0c;从而根据这些表达式的真假值来执行相应的操作。Python提供了三种基本的逻辑运算符&#xff1a;and&#xff08;与&#xff09;、or&#xff08;或&#xff09;和not&#xff08;非&#xff09;。 1. and 运算…

几千年的人类很难弄清楚一百多亿年宇宙的秘密

人类探索宇宙的历程充满了挑战和困难。宇宙之广阔、之复杂远超人类直观理解的范畴。从地球上抬头仰望星空到现代天文学和物理学的深入研究&#xff0c;人类对宇宙的认识经历了漫长且艰难的过程。以下是几个方面来说明为什么人类很难弄清楚宇宙的秘密&#xff1a; 1、宇宙的规模…

Netty源码系列 之 EventLoop run()方法 源码

EventLoop[实现类为NioEventLoop&#xff0c;我们研究NioEventLoop即可] EventLoop是一个单线程的线程池 核心作用&#xff1a;处理执行IO操作&#xff08;accept&#xff0c;read&#xff0c;write事件&#xff09;&#xff0c;普通任务&#xff0c;定时任务 EventLoop封装…

将因子转换为数字

在 R 中使用 as.numeric 函数将因子转换为数字 as 函数通常用于将数据类型显式转换为另一种类型。转换过程在 R 术语中称为强制转换&#xff0c;它表示其他编程语言中存在的强制转换概念。当我们调用函数 as.logical 时&#xff0c;它会尝试将传递的参数强制转换为逻辑类型。类…

精酿啤酒:发酵过程中的温度控制与效果

在啤酒酿造过程中&#xff0c;发酵温度的控制重要&#xff0c;它不仅影响酵母菌的活性&#xff0c;还决定了啤酒的口感、香气和风味。对于Fendi Club啤酒来说&#xff0c;切确控制发酵温度是确保啤酒品质和口感的关键环节。 在Fendi Club啤酒的发酵过程中&#xff0c;温度控制尤…

c#cad 创建-正方形(四)

运行环境 vs2022 c# cad2016 调试成功 一、程序说明 创建一个正方形&#xff0c;并将其添加到当前活动文档的模型空间中。 程序首先获取当前活动文档和数据库&#xff0c;并创建一个编辑器对象。 然后&#xff0c;使用事务开始创建正方形的操作。获取模型空间的块表记录&a…

Vue3大事件项目(ing)

文章目录 核心内容1.大事件项目介绍2.大事件项目创建3.Eslint配置代码风格4.配置代码检查工作流问题: pnpm lint是全量检查,耗时问题,历史问题 5.目录调整6.vue-router4 路由代码解析7.引入 Element Plus 组件库8.Pinia 构建仓库 和 持久化9.Pinia 仓库统一管理 核心内容 Vue3…

C# 夺冠,微软.NET前途光明!

本文以C# 摘得 “2023 年度编程语言“称号为背景&#xff0c;介绍.NET的历史、生态及发展势头&#xff0c;该文章是本人C#专栏的第一篇文章。 这里写目录标题 1.C#摘得"2023年度编程语言"奖项2.什么是.NET&#xff1f;2.1.NET简史2.2.NET是用于应用程序开发的生态系…

蓝桥杯(Web大学组)2022国赛真题:新鲜的蔬菜

主要是对flex的运用 使用 display: flex; justify-content: space-between; 以及对其中单个子元素进行操作&#xff1a;align-self: center; align-self: end; .container {display: flex;justify-content: center;flex-wrap: wrap;width: 960px;margin: 0 auto; }.ite…

YY调音台:音频后期处理

我从事影视后期处理的工作&#xff0c;主要负责音频、音效合成这块工作内容。在影视作品中&#xff0c;声音不仅仅是背景元素&#xff0c;它在叙事和创造情感氛围上发挥着至关重要的作用。我们的工作不仅要让听众听到声音&#xff0c;更要让他们通过声音感受到情感的波动和故事…