티스토리 뷰
반응형
PlayerWeaponHUD.h
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "ThirdPersonCharacter.h"
#include "Runtime/UMG/Public/UMG.h"
#include "PlayerWeaponHUD.generated.h"
/**
*
*/
UCLASS()
class PROJECT_API UPlayerWeaponHUD : public UUserWidget
{
GENERATED_BODY()
public:
virtual void NativeConstruct() override;
virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
private:
class AThirdPersonCharacter* Player;
//색깔변수//
FLinearColor EquipColor;
FLinearColor UnEnquipColor;
//////////
public:
//수류탄 이미지//
UPROPERTY(meta = (BindWidget))
class UImage* GrenadeImage1;
UPROPERTY(meta = (BindWidget))
class UImage* GrenadeImage2;
UPROPERTY(meta = (BindWidget))
class UImage* GrenadeImage3;
///////////////
};
PlayerWeaponHUD.cpp
#include "PlayerWeaponHUD.h"
#include "Runtime/UMG/Public/Components/Image.h"
#include "Runtime/UMG/Public/Components/TextBlock.h"
#include "ThirdPersonCharacter.h"
#include "Engine.h"
void UPlayerWeaponHUD::NativeConstruct()
{
Super::NativeConstruct();
Player = Cast<AThirdPersonCharacter>(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0));
SetVisibility(ESlateVisibility::Visible);
//장착시 색깔과 장착 안했을시 색깔 지정//
EquipColor = FLinearColor(1.f, 1.f, 1.f, 1.f);
UnEnquipColor = FLinearColor(1.f, 1.f, 1.f, 0.3f);
}
void UPlayerWeaponHUD::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
{
Super::NativeTick(MyGeometry, InDeltaTime);
//수류탄의 개수에 따라 색깔을 지정해줌//
if (Player->Current_Grenade == 3)
{
GrenadeImage3->SetBrushTintColor(EquipColor);
GrenadeImage2->SetBrushTintColor(EquipColor);
GrenadeImage1->SetBrushTintColor(EquipColor);
}
else if (Player->Current_Grenade == 2)
{
GrenadeImage3->SetBrushTintColor(UnEnquipColor);
GrenadeImage2->SetBrushTintColor(EquipColor);
GrenadeImage1->SetBrushTintColor(EquipColor);
}
else if (Player->Current_Grenade == 1)
{
GrenadeImage3->SetBrushTintColor(UnEnquipColor);
GrenadeImage2->SetBrushTintColor(UnEnquipColor);
GrenadeImage1->SetBrushTintColor(EquipColor);
}
else if (Player->Current_Grenade == 0)
{
GrenadeImage3->SetBrushTintColor(UnEnquipColor);
GrenadeImage2->SetBrushTintColor(UnEnquipColor);
GrenadeImage1->SetBrushTintColor(UnEnquipColor);
}
///////////////////////////////////
}
Widget c++같은경우에는 FLinearColor로 색을 지정할수 있으면 채도의 값은 FLinerColor의 기본 생성자로 생성할 수 있다.
그래서 값을 R,G,B,A 순으로 최대값(1.f, 1.f, 1.f, 1.f)값이다.
지금은 알파값만 조정하여 수류탄이 있을 경우에는 1을 주고 없을경우에는 0.3f값으로 좀 더 있다는 느낌을 주도록 하였습니다.
Weapon이미지와 구분을 지어서 이런식으로 좀 보기 편하게 만들어놨습니다.
반응형
'Unreal Engine 4 프로그래밍 c++ > UMG' 카테고리의 다른 글
c++ WidgetAnimation 실행 (0) | 2022.01.05 |
---|---|
UserWidget c++ 구현후 HUD에 넣기. (0) | 2022.01.01 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 게임
- html5
- 게임프로그래밍
- 4.27
- 영화리뷰
- 언리얼엔진#FPS
- DirectX12
- RPC
- c++
- 포트폴리오
- 언리얼#c++#기능
- LockonSystem
- DirectX
- Multipalyer
- 포레스트 검프
- 언리얼#게임
- Multiplayer
- ActorComponent
- 언리얼#c++#Interface
- directx3d
- Replicated
- Direct12
- 언리얼#프로그래밍#c++#포트폴리오준비#블루프린트->c++전환
- ReplicatedUsing
- UnReal
- 시애틀의 잠 못 이루는 밤
- 1993
- 프로그래밍
- Direct3D
- 언리얼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함