首页 > 编程语言 >[18] C++虚幻引擎功能拓展

[18] C++虚幻引擎功能拓展

时间:2024-05-07 20:47:09浏览次数:19  
标签:插值 18 C++ 玩家 当前 虚幻 组件 子系统

Day1

添加轴动作

EAxis::Type //轴方向 枚举
//旋转输入轴
UInputModifierSwizzleAxis* SwizzleAxis = NewObject<UInputModifierSwizzleAxis>(MappingContext);
KeyMapping.Modifiers.Add(SwizzleAxis);
//取反输入轴
UInputModifierNegate* Negate = NewObject<UInputModifierNegate>(MappingContext);
KeyMapping.Modifiers.Add(Negate);

玩家角色移动

玩家角色移动视角

GetWorld()->GetDeltaSeconds(); //获取时间碰撞系数
//Tick : 时间膨胀系数 跟帧率相关 , 每一帧的事件间隔120帧显示 : 1/120;

UE C++像蓝图提供变量

Tips :

  • 类是生成实例的依据 , 拖拽到场景后变成实例化
  • 混合空间中的动画默认打了同步组
  • 同步组 : 解决2个动画的衔接问题

触发事件 : 

ETriggerEvent::Started  //按下
ETriggerEvent::Completed //松开

Day2

设置默认的子对象类

父类添加好的组件添加自己的命名组件
替换了引擎的移动组件 , 换成自己的移动组件

创建自己的控制器和相机管理

相机放到玩家控制器 -> 玩家控制器放到gamemode

C++弹簧臂的滞后效果

FInterpTo 是 Unreal Engine 中的一个函数,用于在两个值之间进行插值。它的作用是在一定的时间内,将一个值平滑地从当前值(起始值)变换到目标值,实现渐变效果。

具体来说,FInterpTo函数有以下参数:

  • Current:当前值,即需要进行插值的值。
  • Target:目标值,即希望当前值变换到的目标值。
  • DeltaTime:时间增量,即每帧之间的时间间隔,通常用于控制变换的速度。
  • InterpSpeed:插值速度,表示在给定时间内,当前值从当前位置移动到目标位置的速度。值越大,移动速度越快。
  • InterpAcceleration:加速度,表示在插值过程中的加速度,用于使变换更加平滑。通常情况下可以忽略,设置为0即可。

在你提供的代码中,FMath::FInterpTo(OffsetSpringZ, 0, DeltaTime, 10)表示将 OffsetSpringZ 的当前值(起始值)平滑地从当前位置变换到目标值0,使用给定的 DeltaTime 和插值速度10。这样就会在一定的时间内使得 OffsetSpringZ 平滑地过渡到0,实现了一个平滑的过渡效果。

待机随机动画

子系统 :

生命周期 :

创建: 第一次调用会创建

消亡: 如果子系统是Instance会随着子系统类型消亡

GameInstance :  游戏实例独有一份
LocalPlayer : 一个玩家独有一份
world: 世界独有一份

第一次调用生效

virtual void Initialize(FSubsystemCollectionBase& Collection) override;

c++获取子系统

蓝图 : 获取子系统

生成骨骼网格体和静态网格体

api : 
组件 : GetOwner(); //获取当前使用组件的角色对象
相机管理器 : 
GetOwningPlayerController(); 使用当前相机的玩家控制器
UpdateCamera(); 相当于Tick
动画通知 : 必须加UFUNTION
AnimNotify_RelaxedEnd();

Tips : 
所有的U类构造函数 , 要么无参 , 要么带有构造器
UGameplayStatic 不要用于联网生成

引入文件 : 格式
#include "Components/BillboardComponent.h"
#include "framework/BillboardComponent.h"

标签:插值,18,C++,玩家,当前,虚幻,组件,子系统
From: https://www.cnblogs.com/Aquakinn/p/18175680

相关文章

  • 3D 可视化:18 个 WebGL 框架和 Web3D 图形库
    3D可视化:18个WebGL框架和Web3D图形库作者:2D3D前端可视化开发2023-02-10湖南本文字数:2904字阅读完需:约10分钟WebGL是基于OpenGL的JavaScriptAPI库,允许Web浏览器在浏览器中渲染3D/2D图形,而无需安装额外的插件、桌面应用程序。WebGL允许......
  • Tensorflow object detection API (ubuntu18.04) 安装和踩坑;
    踩坑:将slim和models路径加入虚拟环境中;将slim和models路径加入系统路径中;(加入系统路径的时候,这个pwd) qit(持续更新)具体安装流程:(很多问题)2.0版本;(继续更新)condacreate-ntf_obj_det_api_v2python=3.8 (很丝滑)重新尝试tf1.0版本;参考:https://blog.csdn......
  • 洛谷题单指南-动态规划2-P1833 樱花
    原题链接:https://www.luogu.com.cn/problem/P1833题意解读:在有限的时间内,看n株樱花树,第i株樱花树可以看pi次,看每株樱花树耗费时间ti,看每株樱花树一次美学值ci,求最多能看到多少美学值。解题思路:本题实质是一个混合背包问题(pi>0是多重背包,pi=0是完全背包):背包容量:总时间,可以根据......
  • 桥接模式(C++)
    桥接模式:主要应用于需求复杂,不确定的场景,用于解耦#include<iostream>usingnamespacestd;//ImplementorclassDrawAPI{public:virtualvoiddrawCircle(intradius,intx,inty)=0;virtual~DrawAPI(){}};//ConcreteImplementorAclassRedCircle:......
  • C#/C++ 通过ODBC连接OceanBase Oracle租户
    概述近期我们项目正处于将Oracle数据库迁移到OceanBaseOracle租户模式的阶段。考虑到我们项目采用了C++和C#混合开发,并且使用了多种技术,因此存在多种数据库连接方式。然而,针对C#连接OceanBase的案例相对较少,因此我特意记录下这一过程。开放数据库互连(ODBC)是微软公司开放服务结......
  • ABX盲听测试指南.18176383
    本次测试旨在测试人类对不同品质的音源的敏感程度,在本次测试中我们会测试:128kbps和320kbps的mp3能否听出区别320kbps的mp3和flac能否听出区别本次测试针对如下人群:普通人、发烧友、职业音频从业者(受过专业听音训练)、音频爱好者本次测试所需工具和音源:https://wwp.lanzouo.......
  • C++U7-4-树及其应用(一)
    堆及其应用(一) 预先掌握 堆的定义堆:是一种特殊的树形数据结构,通常指的是二叉堆,可以被看作一棵完全二叉树。堆的特点是每个节点的值都大于等于(对于最大堆)或小于等于(对于最小堆)其子节点的值。堆的根节点包含最大值(最大堆)或最小值(最小堆)。用途:堆:主要用于实现优先队列,支持高......
  • C++U7-3-树及其应用
    树及其应用 树的表示方法       讲解哈夫曼树的基本概念            哈夫曼树的构造    哈夫曼编码的基本概念                作业讲解:链接:https://pan......
  • 深入探究C++ 类成员(Class Members)
    一、定义在class的声明里头,真正有用的两样东西是datamembers和memberfunctions:Datamembers:表示根据这个class所产生的object里头会有些什么东西,它事实上也是占据object内存的唯一东西(除非引入虚拟机制)。通常为数据的封装性,我们把datamembers声明为private或protec......
  • C++面试笔记 - (二)
    1、C++从代码到可执行二进制文件的过程C++和C语言类似,一个C++程序从源码到执行文件,有四个过程,预编译、编译、汇编、链接。预编译:这个过程主要的处理操作如下:将所有的#define删除,并且展开所有的宏定义处理所有的条件预编译指令,如#if、#ifdef处理#include预编译指令,将被包含的......