目录
通过HUD类创建十字准星
创建HUD类,需要重载DrawHUD()函数;
DrawHUD():负责渲染,每一帧执行,可以在此函数中绘制线条
UCLASS() class SHOOTTHEMUP_API ASTUGameHUD : public AHUD { GENERATED_BODY() public: virtual void DrawHUD() override; private: void DrawCrossHair(); };
TInterval<>:模板函数,用于表示一个区间,包含了最小和最大值,可以用于判断两个区间是否重叠,合并两个区间等,比如Center.Contains(X),检查X是否在区间
Canvas->SizeX SizeY:获取屏幕大小
FLinearColor::Green 绿色
DrawLine:用于绘制线,参数:起始X,起始Y,终点X,终点Y,线颜色,线粗细
#include "Engine/Canvas.h" void ASTUGameHUD::DrawHUD() { Super::DrawHUD(); DrawCrossHair(); } void ASTUGameHUD::DrawCrossHair() { //TInterval<>:特殊类型,用于表示一个区间,包含了最小和最大值,可以用于判断两个区间是否重叠,合并两个区间等,Center.Contains(X),检查X是否在区间 //Canvas->SizeX SizeY:获取屏幕大小 const TInterval<float> Center(Canvas->SizeX * 0.5, Canvas->SizeY * 0.5); const float HalfLineSize = 10.0f; //线的粗细 const float LineThickness = 2.0f; //线的颜色 const FLinearColor LineColor = FLinearColor::Green; //DrawLine:用于绘制线,参数:起始X,起始Y,终点X,终点Y,线颜色,线粗细 //绘制X方向的线 DrawLine(Center.Min - HalfLineSize,Center.Max,Center.Min + HalfLineSize,Center.Max,LineColor,LineThickness); //绘制Y方向的线 DrawLine(Center.Min,Center.Max - HalfLineSize,Center.Min,Center.Max+HalfLineSize,LineColor,LineThickness); }
GameMode覆盖新的HUD类
ASTUGameModeBase::ASTUGameModeBase() { DefaultPawnClass = ASTUBaseCharacter::StaticClass(); PlayerControllerClass = ASTUPlayerController::StaticClass(); HUDClass = ASTUGameHUD::StaticClass(); }
设置组件拥有者不可见
SetOwnerNoSee():拥有者不可见
HealthTextComponent->SetOwnerNoSee(true);
对应在蓝图中搜索See