首页 > 编程语言 >UE4 c++重构简单死亡之眼的效果

UE4 c++重构简单死亡之眼的效果

时间:2023-11-08 19:33:24浏览次数:36  
标签:FColor false void c++ bFlipFlop StartCameraFade UE4 UGameplayStatics 之眼

虚幻社区中有蓝图教学视频
image
使用C++重构,主要用到UGameplayStatics类中的SetGlobalTimerDilation方法,以及角色的相机管理器的调用,之后通过StartCameraFade方法实现显示效果

UE4中的时间膨胀

参考
全局方法:SetGlobalTimerDilation(GetWorld(),Timer);
对单个对象的时间膨胀:this->CustomTimeDilation = Timer;
Timer的选择主要有4个层级

  • 0:super lenta
  • 0.25: lenta
  • 1: normal
  • 2: rapida

获取相机管理器

UE4为相机管理器专门建立了一个类APlayerCameraManager,我们需要利用UGameplayStatics::GetPlayerCameraManager获取当前角色的相机。需要传入UObject和index。

实现颜色变化效果

相当于给摄像机加一个滤镜,所以利用上一步获取的摄像机对象调用StartCameraFade()方法

void APlayerCameraManager::StartCameraFade(float FromAlpha, float ToAlpha, float InFadeTime, FLinearColor InFadeColor, bool bInFadeAudio, bool bInHoldWhenFinished)

image

实现FlipFlop效果

参考
首先定义一个布尔变量,然后每次调用函数,改变这个布尔变量的值。

bool bFlipFlop = false;

void FlipFlop()
{
  bFlipFlop = !bFlipFlop;
}

完整c++代码

//.h文件
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
	bool bFlipFlop;
/** 实现慢动作播放*/
void DeathEyes();

//.cpp文件
bFlipFlop = false;//构造函数中

//void ASimpleDeathEyesCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
PlayerInputComponent->BindAction("DE", IE_Pressed, this, &ASimpleDeathEyesCharacter::DeathEyes);

void ASimpleDeathEyesCharacter::DeathEyes()
{
	bFlipFlop = !bFlipFlop;
	if (bFlipFlop) 
	{
		UGameplayStatics::SetGlobalTimeDilation(GetWorld(), 0.25f);
		APlayerCameraManager* TargetCamera = UGameplayStatics::GetPlayerCameraManager(this, 0);
		FColor MyColor1 = FColor(255, 192, 203, 255);
		TargetCamera->StartCameraFade(0.0f, 0.25f, 1.0f, MyColor1, false, true);
	}
	else 
	{
		UGameplayStatics::SetGlobalTimeDilation(GetWorld(), 1.0f);
		APlayerCameraManager* TargetCamera = UGameplayStatics::GetPlayerCameraManager(this, 0);
		FColor MyColor2 = FColor(0, 0, 0, 255);
		TargetCamera->StartCameraFade(0.0f, 0.0f, 0.0f, MyColor2, false, false);
	}
}

标签:FColor,false,void,c++,bFlipFlop,StartCameraFade,UE4,UGameplayStatics,之眼
From: https://www.cnblogs.com/XTG111/p/17818123.html

相关文章

  • 2309 c/c++二级
    5.话题焦点人物#include<bits/stdc++.h>usingnamespacestd;map<int,int>x;intmain(){intn,maxx=0,c;cin>>n;inta[n+1],b[n+1],k[n+1];for(inti=1;i<=n;i++){cin>>a[i]>>b[i];for(intj=1......
  • C++笔记 -- 使用STL的function实现回调机制(回调函数)
    1.使用普通函数示例一 代码:#include<iostream>#include<functional>//定义一个回调函数类型usingCallback=std::function<void(int)>;//定义一个函数,用于演示回调函数的使用voidperformOperation(intdata,Callbackcallback){//执......
  • C++中main(int argc, const char* argv[])的意义和命令参数的添加
    在C++程序中经常会看到main函数有两个输入参数,经常疑惑main不是C++入口吗,在调试的过程中有很少用到。最近查看一些工程时发现有些工程使用这两个参数,查资料得知这是命令,在没有UI但是又需要外部参数输入时极为方便。在VS中,该命令的设置在:项目"属性"->"调试"->"命令参数" ......
  • 第十四届C/C++研究生组省赛
    C.翻转首先如果第一个和最后一个棋子颜色不一样,那么是没办法用规则进行翻转的,输出-1。如果第一个和最后一个颜色相同,则遍历该串,若当前遍历的棋子颜色不一样,则看两边棋子颜色是否与当前棋子不同,若不同则可以改变颜色,若有一个相同则不能改变颜色,输出-1。#include<bits/stdc......
  • 【每日例题】蓝桥杯 c++ 绘制表格
    绘制表格题目蓝桥杯绘制表格题目分析阅读题目,我们可以将表格分为四个部分,头、中间的竖线部分与横线部分、尾。因此,我们可以启用多个for循环分别解决在第一行,我们也可以分为三个部分,第一部分符号为:“┌”,第二部分的中间部分使用for循环输入:“─┬”,第三部分符号为:“─┐”......
  • Visual C++ 6.0的快捷键
    F1-F12F1显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容(需要安装MSDN才能使用)F2书签功能:Ctrl+F2--在某行设置一个书签(再按一次是取消)F2--跳到下一个书签位置Shift+F2--跳到上一个书签位置Ctrl+Shift+F2--删除所有书签F3查找:Ctrl+F3--在文件......
  • C语言程序设计 安装Visual C++ 6图示
    本示例安装VC6用于编写,编译和调试C语言。下载:首先从网上下载英文企业版VisualStudio6,约250-650M。迅雷下载:http://www.gougou.com/search?search=vc%2B%2B%206&id=0 英文企业版VisualStudio6安装图示:  ......
  • C++修饰符类型
    1、static静态存储修饰符:作用于变量时,使变量只被初始化一次,并且变量生命周期延长至和当前进程一致。作用于函数时,时函数只在当前文件中可见,调用权限只在当前文件。 2、const常量类型修饰符:作用于变量时,使该变量不可被更改。constintvalue=0;......
  • C#C++,opencv的dll中detach相关:关于调用dll后程序退出后进程仍然驻留系统列表的问题
    我在c#中调用C++的dll,内部使用了线程并detach使其独立于主线程UI运行。但后来发现程序关闭后,任务列表中的进场依然存在,即app并未实际正常退出。这个问题有很多人碰到和争论,但都没有给出明确的答案。这里提供一个理论解释和绝佳的调试排除方法:根本原因:程序退出之前,系统(或程序员......
  • windows 环境下dev c++安装第三方库
    参考资料https://blog.csdn.net/u011342183/article/details/79823564测试下载第三方库开发文件安装到devc++设置路径选择工具->编译器选项然后导入include路径......