분류 전체보기
-
아이템 Enum값 추가Game Programming/언리얼 2023. 10. 17. 16:21
item.h and item.cpp UENUM(BlueprintType) enum class EItemState : uint8 { EIS_Pickup UMETA(DisplayName = "Pickup"), EIS_EquipInterping UMETA(DisplayName = "EquipInterping"), EIS_PickedUp UMETA(DisplayName = "PickedUp"), EIS_Equipped UMETA(DisplayName = "Equipped"), EIS_Falling UMETA(DisplayName = "Falling"), EIS_MAX UMETA(DisplayName = "DefaultMAX") }; 아이템 상태 enum값을 추가했다. 아래와 같이 사용되는 것 같다. Pickup..
-
무기 생성Game Programming/언리얼 2023. 10. 17. 14:44
무기 생성을 위해 Mesh, Flash Light, Point Light를 Weapon.cpp에서 구현했다. Weapon.h private: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Light, meta = (AllowPrivateAccess = "true")); class UPointLightComponent* PointLight; private: void CreateMesh(); protected: void CreateLightFromBP(const FString& socketName); public: void TurnLight(bool bLight); void ToggleLight(); const class USkeletalMeshSock..
-
클래스 배열 PickupWdigetBP 바인딩Game Programming/언리얼 2023. 10. 17. 11:23
PickupWidgetBP 이미지 아이템 색상 부분에서 Create Binding을 선택한다. 아이템 객체와 Linear Color 변수 3개 로컬 Linear Color 변수 1개를 선언한다. BaseweaponeBP BeginPlay 이벤트에서 pickupwidgetBP의 Item객체에 자기자신을 복사시켰다. PickupwidgetBP 디테일 패널에서 입력 인자를 Integer타입과 리턴 다입을 LinearColor로 설정한다. 아이템 객체에서 배열을 가져와 Branch를 사용해 특정 인덱스(Active StarIndex) 값이 true이면 Visible Alpha false이면 Hidden Alpha로 ReturnAlpha를 사용한다. 위 블루프린트는 노드를 드래그 한 뒤 Collapse to Fu..
-
Bind item nameGame Programming/언리얼 2023. 10. 16. 18:31
Item.h /* The name which appears on the pickup widget*/ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Item Properties", meta = (AllowPrivateAccess = "true")); FString ItemName; 아이템 이름을 추가했다. PickupWidgetBP 아이템 객체에 대한 참조 변수를 생성했다. BaseWeaponBP BaseWeapon이 가지고 있는 PickupWiget 객체를 PickupWidgetBP로 캐스팅한 뒤, PickupWidgetBP 소유의 Item Reference를 Self(C++로 따지면 this)를 사용하여 Set했다. PickupWidgetBP 아..
-
프로그래머스 Lv3 선입 선출 스케줄링(복습필요)Computer Science/프로그래머스 2023. 10. 16. 17:41
문제 해석 n 처리해야 할 작업의 개수 cores 각 코어의 처리시간이 담긴 배열 cores에 담긴 시간이 경과 할 때 처리 작업의 개수를 하나씩 줄여나간다. (2개 이상의 코어가 남을 경우) 접근법 완전 탐색의 경우 BigO(n * 코어의 개수) 이므로 시간 초과가 발생한다. 따라서 Parametric Seach를 이용해야한다. 1. 파라메트릭 서치란? 파라메트릭 서치는 최적화 문제를 결정 문제로 바꾸어 풀어 나가는 기법입니다. 여기서 결정 문제란 'yes' or 'no' 즉 '예' 또는 '아니오:로 답하는 문제를 말합니다. 파라메트릭 서치는 주로 특정 조건을 만족하면서 동시에 가장 적합한 변숫값을 찾아나가는 문제에서 활용되며, 이진 탐색(Binary Search)을 이용하여 구현합니다. 예를 들어, ..
-
프로그래머스 Lv3 거스름돈Computer Science/프로그래머스 2023. 10. 16. 15:35
접근법 "정답이 커질 수 있으니, 1,000,000,007로 나눈 나머지를 return 해주세요." 라는 문구를 보고 완전 탐색은 배제해야하는 문제이다. 따라서 DP로 접근해야하는데, 예를 들어서 손님께 5원을 거슬러 줘야하고 1원, 2원, 5원이 있다면 다음과 같이 4가지 방법으로 5원을 거슬러 줄 수 있습니다. 1원은 5개를 사용해서 거슬러 준다. 1원을 3개 사용하고, 2원을 1개 사용해서 거슬러 준다. 1원을 1개 사용하고, 2원을 2개 사용해서 거슬러준다. 5원을 1개 사용해서 거슬러준다. 예시를 보고 3원을 구하는 경우의 수를 볼 때 3원 = 1원 + 1원 + 1원3원 = 1원 + 2원3원 = 2원 + 1원이렇게 경우의 수가 순서에 따라 달라질 수 있으므로 순서에도 신경을 써야하는 문제이다. ..
-
Create DoorGame Programming/언리얼 2023. 10. 15. 22:30
cpp클래스에 Item 클래스를 상속받는 ACDoor 클래스를 선언했다. CDoor.h protected: virtual void BeginPlay() override; virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) override; virtual void OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimi..
-
프로그래머스 Lv3 가장 긴 팰린드롬Computer Science/프로그래머스 2023. 10. 15. 20:24
문제 풀이 해당 문제는 인덱스 접근을 통해서 풀었다. 전체 문자열을 반복하면서 패린드롬을 구하는 포인터를 다르게 하면서 홀수인 경우와 짝수인 경우의 팰린드롬을 나눠서 구했고 최대값을 저장했다. for(int i = 0; i < s.size(); ++i) { int odd = isPalindrome(s, i, i); int even = isPalindrome(s, i - 1, i); int ismax = max(answer, odd); answer = max(ismax, even); } 포인터로부터 left는 감소 right는 증가시켜나가며 문자열이 같은지 확인했다. 문자열의 길이는 right - left -1 이다. ex) 7 - (-1) -1 int isPalindrome(string s, int le..