Unreal - 마우스 커서 바꾸기

2025. 4. 25. 10:43·Unreal5 프로젝트 다이어리

마우스커서를 변경해보겠습니다

적이있을때는 공격 마우스커서

아닐때는 일반 마우스커서 총 두가지의 마우스커서를 변경해보겠습니다

 

유저인터페이스 -> 위젯블루프린트

한개는 기본마우스 한개는 공격용 마우스 두가지를 위젯블루프린트를 만들어주겠습니다

기본마우스부터 작업해보겠습니다

위젯블루프린트에 SizeBox(크기박스)를 넣고

SizeBox를 Desired로 변경

너비와 높이를 오버라이드를 체킹후 크기를 설정

이미지를 넣고 마우스커서 이미지를 넣어주시면되겠습니다

 

 

 

 

프로젝트세팅 - 유저인터페이스 - 소프트웨어 커서

Default로해주시고 엘리먼트에 저희가 만든 일반 커서위젯블루프린트를 넣어줍니다

 

플레이어가 할당하고있는 플레이어컨트롤러 생성자에서 이렇게 작성합니다

bShowMouseCursor = true;
DefaultMouseCursor = EMouseCursor::Default;
CurrentMouseCursor = EMouseCursor::Default;

마우스커서를 보이고 기본 마우스커서를 프로젝트 세팅에서 설정한 것으로 마우스커서를 변경

마우스 커서가 제가 설정한 이미지로 바뀐것을 확인할수 있습니다

 

그럼 마우스가 적을 향할때 공격마우스커서로 변경해보겠습니다

사용할 위젯블루프린트를 만들어줍니다

마우스커서에 CrossHairs를 추가하고 공격용 마우스커서위젯 블루프린트를 추가합니다

마우스커서의 모양을 결정할 함수를 만들어주겠습니다

사용할 함수와 직전까지 마우스위에 있던객체를 추적하는 bool변수 하나를 만들어주었습니다

void ASwordPlayController::CheckMouseCursorShape()
{
	FHitResult mouseHitResult;
	GetHitResultUnderCursor(ECC_Visibility, false, mouseHitResult);
	if (mouseHitResult.bBlockingHit)
	{
		AActor* hitActor = mouseHitResult.GetActor();
		if (hitActor && hitActor->GetName().Contains(TEXT("Crow")))
		{
			if (!bOnMouseCursorRecord)
			{
				bOnMouseCursorRecord = true;
				CurrentMouseCursor = EMouseCursor::Crosshairs;
			}
			return;
		}

		if (bOnMouseCursorRecord)
		{
			bOnMouseCursorRecord = false;
			CurrentMouseCursor = EMouseCursor::Default;
		}
	}
}

적이 이름이 Crow~~ 니깐 Crow라는 이름을 포함한 객체는 마우스 커서를

CrossHair 즉 공격마우스커서 로 바꾸고

아니라면 마우스커서를 일반 마우스 커서로 바꿉니다

 

플레이어 컨트롤러 tick에서 작동합니다

 

최종 결과물

 

-----2025.05.16 디버깅---

마우스가 위젯이미지보다 클릭되는 판정이 작은 버그를 발견하였습니다

 

판정범위를 수정하겠습니다

하이어라키를 변경하겠습니다

캔버스패널 -> custom 72, 72로 수정

앵커를 중앙으로

 

캔버스패널에 속한 이미지를 앵커 중앙을 기점으로 마우스의 끝이바라보도록 수정하겠습니다

 

앵커가 가르키는곳이 곧 클릭 위치가 됩니다 마우스의 끝을 앵커로 맞춰주시면되겠습니다

 

수정된버전

'Unreal5 프로젝트 다이어리' 카테고리의 다른 글

Unreal - 8방향 블렌드스페이스(BlendSpace)  (0) 2025.04.27
Unreal - 미니맵 만들기  (0) 2025.04.25
Unreal - 스택형 스킬 구현하기  (0) 2025.04.24
Unreal - 원형 프로그래스바(ProgressBar) 만들기  (0) 2025.04.24
Unreal - Ghost Trail(고스트 트레일) 잔상  (0) 2025.04.23
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal - 8방향 블렌드스페이스(BlendSpace)
  • Unreal - 미니맵 만들기
  • Unreal - 스택형 스킬 구현하기
  • Unreal - 원형 프로그래스바(ProgressBar) 만들기
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (126) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (5) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (24) N
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (4) N
      • 코드 개인보관함 (8)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    unreal 로딩
    언리얼 페이드 아웃
    언리얼 컷씬
    unreal look at
    언리얼 behavior tree
    언리얼 모션매칭
    언리얼 시퀀스
    언리얼 foot step
    unreal 컷씬
    언리얼 로딩창
    unreal sequence
    언리얼 motionmatching
    언리얼 비헤이비어트리
    언리얼 look at
    unreal 모션매칭
    언리얼 behaviortree
    언리얼 로딩
    unreal 시퀀스
    unreal loading
    언리얼
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal - 마우스 커서 바꾸기
상단으로

티스토리툴바