Unity Player 5가지 이동 방식
·
Unity
유니티에는 이동을 위한 5가지 방식이 존재한다.이를 비교해보고자 한다.공부를 위해 AI를 통해 정리한 내용입니다.1. transform.Translate✔ 사용 예시UI 요소슬라이딩 퍼즐연출 애니메이션NPC가 충돌이 필요 없을 때❌ 쓰면 안 되는 경우충돌체 필요할 때Rigidbody 존재할 때벽 관통을 막아야 하는 캐릭터/차량/플레이어🎮 실제 사용 게임 예시캐주얼 연출퍼즐 게임2D UI 게임✨ 코드 예시transform.Translate(Vector3.forward * speed * Time.deltaTime);⚠️ 문제점collider & rigidbody 무시 → 관통FixedUpdate와 연동 안 됨물리 X→ “사람이나 차량 이동에는 절대 사용 불가.”🤔충돌체 잘 뚫림2. Rigidbody.ve..
Unreal5 DataTable 만들기
·
Unreal
복잡한 게임일 수록 데이터가 많아져 일일히 관리하기가 힘들어진다.그럼 어떻게 관리해야할까? 데이터를 모아서 한꺼번에 지정해주기 쉽게 하기 위해선 데이터테이블을 사용할 수 있다!C++로 데이터테이블을 만들어보자임의로 레벨의 정보를 전달하는 데이터테이블을 만들어보겠다.1. DataTable Row 생성데이터테이블을 만들기 위해선 Row 구조체가 필요하다.에디터의 좌측 상단에서 새로운 C++ 클래스를 만들어주자TableRow에 대한 부모는 따로 없으므로 없음을 선택하고 다음을 눌러준다..h와 .cpp의 내용을 모두 지워주고#pragma once#include "CoreMinimal.h"#include "Engine/DataTable.h"#include "MapInfoRow.generated.h"enum cla..
[Trouble Shooting] 델리게이트 바인딩 문제
·
Trouble Shooting
DepthComponent의 델리게이트에 DepthWidget의 함수를 바인딩하는 과정에서 문제가 발생하였다. 🔹문제 상황그림과 같은 상태에서 DepthComponent에 존재하는 OnDepthUpdatedDelegate에DepthWidget에 존재하는 SetDepthText를 바인딩 해야 하는 상황이었다. 먼저 PlayerHUDComponent에서 Depthcomponent를 가져와서 BeginPlay에서 바인딩을 해주었는데로비에서는 잘 작동하였지만 왜인지 다음 레벨로 넘어가니 작동이 끊겼다.(로그로 확인)🔹가설 레벨이 이동하면 액터가 파괴되고 재생성되기 때문에 BeginPlay가 다시 실행되어 바인딩이 작동해야한다.하지만 바인딩이 끊긴 것을 보니 BeginPlay가 실행되지 않는 걸까 싶었다.🔹..
[250602 TIL] k 진수에서 소수 개수 구하기 | 위젯 드래그 앤 드랍
·
TIL
1️⃣코딩 테스트 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🔹틀린 부분long 사용 Xint 범위로 충분한 경우도 많지만, 문제에서는 잠재적으로 클 수 있는 값이 있다면 long으로 잡는 게 습관적으로 안전하다.소수 판별 시간 초과제곱근 사용해야함while을 나와서 splitNum.push_back(stol(str)); 할 때 1이 들어갈 수 있음을 간과소수 판별 반복문에서 1 제외해줌💭회고모듈을 만드는 단계가 명확한 문제였다.소수를 제곱근으로 구해서 시간을 단축하는 것을 까먹어가고 있었는데 다시 상기시킬 수 있었다..2️⃣ 언리얼 Unreal5 위젯 NativeOn 함수1️⃣ 개요언리얼의 위젯블루프린트..
Unreal5 드래그 앤 드랍 구현
·
Unreal
1️⃣ 개요언리얼의 위젯 블루프린트는 클릭 및 호버 관련하여 쉬운 이벤트 연결을 제공하지만 드래그 앤 드랍은 조금 복잡하다.블루프린트로도 가능은 하지만 확장성을 위해 C++로 구현하는 드래그 앤 드랍을 알아보고자 한다.드래그 앤 드랍을 만들기 위해서는 3가지 요소가 필요하다.1. 드래그 시 표시할 프리뷰 위젯2. 드래그되는 정보를 저장할 DragDropOperation 3. 드래그 드랍의 대상이 되는 위젯 각각에 대해 자세히 알아보자.2️⃣ 드래그 시 표시할 프리뷰 위젯#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "DragPreviewWidget.generated.h"class UImage;class UText..
Unreal5 위젯 NativeOn 함수
·
Unreal
1️⃣ 개요언리얼의 위젯블루프린트의 버튼을 보면 OnClicked, OnHovered 등과 같이 클릭, 호버 이벤트를 쉽게 연결할 수 있다.그렇다면 C++에서는 이러한 이벤트를 연결하기 위해서는 어떻게 해야할까?바로 NativeOn~() 함수들을 오버라이드하면 된다. 💡Info▪️기본적으로 Super::NativeOn~() 호출해주는 게 안전2️⃣ 생성주기 NativeOn//위젯 처음 초기화될 때 호출void NativeOnInitialized()//위젯 생성 직후 호출void NativeConstruct()//매 프레임마다 호출void NativeTick(const FGeometry& InGeometry, float InDeltaTime)3️⃣ 입력 관련 NativeOn//마우스가 위젯에 올라올 때v..
[250509 TIL] 최종 팀프로젝트 인벤토리 구조 설계
·
TIL
1. 아이템 저장 자료구조 고민1-1 인벤토리가 3가지여서 아이템 저장 배열을 3개를 만들어야 하나 생각했으나TArray EquipmentInventoryTArray ConsumableInventoryTArray ExchangableInventory 1-2 만들어야할 함수가 많아질 것이라 생각되어TMap에 3가지 인벤토리에 대한 아이템들의 인덱스를 저장하기로 함TArray InventoryItemTMap EquipmentMapListTMap ConsumableMapListTMap ExchangableMapList1-3 인덱스 저장도 타입별로 따로 해야 하나 싶었지만선언할 변수 및 함수를 줄이기 위해 TMap>로 결정TArray InventoryItemTMap2. 인벤토리 사이즈 저장 자료구조 고민 사이즈..
[250505 TIL] 코딩테스트 피보나치 수, 카펫
·
TIL
1️⃣코딩테스트[피보나치 수]https://github.com/swehio/Baekjoon/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12945.%E2%80%85%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98%E2%80%85%EC%88%98🔹피보나치 수를 푸는 두가지 방법1. 재귀함수점화식 F(n) = F(n-2) + F(n-1)을 이용한 재귀 호출 방법n이 50 이상일 때 시간 초과 문제 발생 2. 반복문for문을 이용한 동적 계획법메모이제이션을 활용해 재귀 호출 횟수 감소 가능❓메모이제이션 계산한 값을 저장해두었다가 쓸 일이 있을 때 활용저장 자료구조로는 배열 추천 🔹피보나치 수가 매우 커질 때n번째 피..
[250501 TIL] 최종 프로젝트 UML Diagram 설계
·
TIL
무기에 대한 UML Diagram을 설계해보았다.설계하다보니 구조체를 만들어야 할 것 같아서 원석님과 의논해보았는데 성래님까지 오셔서 도와주셨다.구조체 대신 FTableRowBase를 사용해서 열을 만들고 FItemData를 따로 또 만들어주었다.나는 다 변수를 만들 생각을 했는데 다른 분들은 Id를 사용을 해서 이렇게 할 수도 있구나 싶었다.또 Row를 만들다보니 자원과 합쳐야 하는 상황이되어서 ItemBase를 두어 이를 상속받도록 해주었다.
Unreal5 AI제작3_AI NPC에 감각 부여하기
·
Unreal
1️⃣ 시각🔹AI Controller 코드더보기#pragma once#include "CoreMinimal.h"#include "AIController.h"#include "BehaviorTree/BehaviorTree.h"#include "BehaviorTree/BlackboardComponent.h"#include "Perception/AIPerceptionComponent.h"#include "Perception/AISenseConfig_Sight.h"#include "Perception/AIPerceptionTypes.h"#include "CoolGuyAIController.generated.h"UENUM(BlueprintType)enum class ESearchStateInternal : ui..