UE4-笔记-通用功能实现逻辑/材质例子
UGameViewportClient记一些自己实现的通用功能的例子.备查
-----------------------------------------
Q.保持场景Actor相对于Screen的像素缩放比(例如Gizmos组件):
ref:参考UE源码的UnrealWidgetRender.cpp 里的Render_Rotate函数实现:
如源码,第一步需要获得的是当前相机位的ViewMatrix 的视口矩阵
方式一:
直接重写UGameViewportClient::Draw 截获FSceneView Instance实现.(同Gizmos逻辑)
方式二:
从指定相机获取Info并计算相关Matrix
UCameraComponent * _Camera = nullptr; /* your camera component */ FMinimalViewInfo info; _Camera->GetCameraView(DeltaTime,info); FMatrix _ViewMatrix; FMatrix _ProjectionMatrix; FMatrix _ViewProjectionMatrix; UGameplayStatics::GetViewProjectionMatrix(info,_ViewMatrix, _ProjectionMatrix, _ViewProjectionMatrix); FVector2D _size; GEngine->GameViewport->GetViewportSize(_size); float Scale = _ProjectionMatrix.TransformFVector4(this->GetActorLocation()).W * (4.0f / _size.X / _ProjectionMatrix.M[0][0]); FVector scaleV(Scale);
Q.双击模拟(应用于二段跳/双击W加速跑等):
推荐用C++实现的,BP不好维护 搜索定位=_,=
BP:
宏实现:
C++实现:
---------- 割割割 -----------
.h文件:
UENUM(BlueprintType) enum class EM_ClickType : uint8 { EM_FisrtClick UMETA(DisplayName = "FisrtClick"), EM_DoubleClick UMETA(DisplayName = "DoubleClick") }; UCLASS() class UBPLibrary_CommonDemonstrate : public UBlueprintFunctionLibrary { GENERATED_BODY() public: UFUNCTION(BlueprintCallable) static EM_ClickType DoubleClick(); };
cpp文件:
EM_ClickType UCppBPLibrary_CommonDemonstrate::DoubleClick() { static bool bReadyOnce = false; if (bReadyOnce) { bReadyOnce = false; return EM_ClickType::EM_DoubleClick;// double click } else { bReadyOnce = true; TFuture<void> future = Async<void>(EAsyncExecution::TaskGraph, [=] { FPlatformProcess::Sleep(0.25); if (bReadyOnce) { bReadyOnce = false; return; } }); return EM_ClickType::EM_FisrtClick; // first click } }
使用:
Q.UMG追踪Actor(3D方位转2D UMG坐标):
用于释放指向性道具等需要Actor和UMG联动的操作.
类似泡泡卡丁车的释放导弹追踪功能:
主要函数 BP:
Q.TA向-半透明材质剔除模型重复渲染区域+边缘高亮:
记一下材质球和实现步骤,备复用
目标mesh Component 需启用 RenderCustomDepthPass
移动端开启文档:https://docs.unrealengine.com/en-US/Platforms/Mobile/PostProcessEffects/index.html
Q.TA向-物化/像素化特效:
来源:https://www.artstation.com/artwork/rRaNKO
Q.TA向-后期盒之边缘高亮实现:
来着Youtube: https://www.youtube.com/watch?v=rL7VUeZzRyQ
wait
Q.TA向-根据距离计算材质透明度:
Q.UE4-防抖动:
本文原创,不定时更新
可以随意转载到任何网站
~但是~ 转载也要按“基本法”
请注明原文出处和作者