Unreal - 몬스터 웨이브 만들기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
던전에 입장하면 몬스터들이 차례대로 나오고 던전맵에서 AI 몬스터들이 차례대로 스폰되는웨이브스폰을 구현해보도록 하겠습니다 게임모드에서 구현하겠습니다던전에 입장하면 해당 던전의 클리어 퍼센트 UI가 좌측상단에 표시되며처음에 스폰시킨 AI의 일정마리수 이상을 잡으면 다음 몬스터가 스폰되도록하겠습니다 먼저 ai가 죽는 카운트를 알아야합니다게임모드에 카운트하는 변수를 선언 스폰지점을 월드좌표의 스폰되는 중앙지점을 구합니다월드좌표 1108, -1200, 107 로 설정하였습니다 스폰위치를 구해 랜덤위치 랜덤좌표로 스폰하는데플레이어 주변 300만큼에서는 스폰을 하지않고 그 외의 오프셋을 적용한 랜덤위치, 랜덤방향에서스폰하겠습니다Property에서 skeleton1 ~ 5 에사용할 AI도 할당시켜주었습니다 .h입니..
TActorIterator객체 다수사용
·
Unreal 디버깅
액터를 만들어서 액터의 함수를 사용할려고한다그 액터의 PROPERTY를 다르게 하여 똑같은C++을 부모로 상속하지만다른값을 들고있다Iterator로 만약 함수를 들고올려면 무조건 첫번째 액터만 기능케한다 해당코드처럼 iterator를 사용하여 함수를 호출하게되면 객체가 여러개가되면 개별적으로 정상작동을 하지않게된다 특정객체를 딱 참조해서 property에 할당시킨뒤 iterator에 한개만 찾고그 찾은 객체를 지칭시키면된다 iterator를 찾을곳의 .h에 선언후UPROPERTY(EditAnywhere, Category="MySettings")TSubclassOf cristal;ATeleporterCristal* cristalInstance; 크리스탈 인스턴스와 iterator를 같게해주고iterator..
Unreal - 버튼 위젯 사용하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
사용자가 크리스탈에 오버랩되자마자 이동하는것이 어색하다고 판단하여오버랩되면 이동할것인지 말것인지 마지막으로 확인하는 ui를 만들어보도록 하겠습니다 캔버스패널을 ui에 추가후버튼을 추가합니다 버튼의 스타일 -> 노말 , 호버, 눌림 이있습니다노말은 일반적으로 보여지는 상태호버는 마우스를 버튼위에 가져다 댔을때눌림은 마우스가 버튼을 클릭했을때 입니다각각 알맞은 이미지를 할당해주겠습니다 변수로 만들어주겠습니다 버튼과 실행될 함수를 선언public: virtual void NativeConstruct() override; UPROPERTY(meta = (BindWidget)) UButton* Button_Yes; UPROPERTY(meta = (BindWidget)) UButton* Button_No; UFUN..
Unreal - 로딩 창
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
로딩창을 구현해보도록 하겠습니다원형 쓰로버로 로딩스피너를 사용. . . 을 해당 위 아래로 가는 애니메이션을 만들어서 Dot1Animation ~ Dot3Animation까지 만들어주었습니다또한 프로그래스바를 만들어주었습니다해당 위젯은 코드와 바인드하여 작동하게 하였습니다 public: UPROPERTY(meta = (BindWidget)) class UTextBlock* TextBlock_Dot1; UPROPERTY(meta = (BindWidget)) class UTextBlock* TextBlock_Dot2; UPROPERTY(meta = (BindWidget)) class UTextBlock* TextBlock_Dot3; UPROPERTY(meta = (BindWidgetAnim), Transie..
Unreal - 페이드 인 / 아웃
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
레벨을 이동해보겠습니다레벨을 이동시켜줄 콜리전을 가지고있는 액터를 만들어주었습니다. 오버랩 상호작용할 boxCollision과 루트컴포넌트 씬 컴포넌트를 선언해주고 만들어주었습니다UPROPERTY(EditAnywhere, Category = "MySettings")class UBoxComponent* boxCollision;UPROPERTY(EditAnywhere, Category = "MySettings")class USceneComponent* sceneComp;ATeleporterCristal::ATeleporterCristal(){ PrimaryActorTick.bCanEverTick = true; sceneComp = CreateDefaultSubobject(TEXT("sceneComp")); ..
Unreal - GameMode로 맵마다 설정을 변경하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
어떤맵에서는 플레이어의 UI가 보이던가 안보이던가플레이어의 몇몇 인풋 (ex공격) 이 막힌다던지게임모드를 여러개 만들어서 각각 맵에 알맞은 세팅을 해보도록 하겠습니다 지금 던전입구맵입니다 해당 맵에서는 스킬의 ui가 보이면 안됩니다 그런데 보이고 있습니다 우선 스킬창을 안보이게 해보겠습니다스킬에 관한 ui를 또다른 캔버스패널 CanvasPanel_Skill을 만든뒤그 캔버스패널에 자식으로 원래의 스킬 ui를 옮겨주었습니다 위젯에서는 반드시 해당 캔버스패널과 BindWidget이 되어있어야하며 이름이 동일해야합니다UPROPERTY(meta = (BindWidget))class UCanvasPanel* CanvasPanel_Skill; 플레이어의 CameraArmLength와 UI를 보여줄건지 말건지에 대한..
Unreal - 쿼터뷰 시점 벽에 붙었을떄 카메라의 이동
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
Isomatric View의 고질적인 문제입니다해당시점과 같은 쿼터뷰는 게임내의 오브젝트가 플레이어를 가리거나카메라가 물체 바깥에 있는 곳을 보여주는 문제점이 존재합니다 현재 저의 카메라 시점 설정코드입니다 코드를수정해주겠습니다// Camera HitSpringArmComponent->bDoCollisionTest = true;SpringArmComponent->ProbeSize = 12.0f;SpringArmComponent->ProbeChannel = ECC_Camera;// Camera MoveSpringArmComponent->bEnableCameraLag = true;SpringArmComponent->CameraLagSpeed = 10.0f;카메라 암 컴포넌트의 bDoCollisionTest..
Unreal - 텍스처 스트리밍 풀이 예산을 초과했습니다 에러 고치기
·
Unreal 디버깅
언리얼엔진에서 작업을 하다보면 해당 에러가 보이는경우가 있습니다 콘솔창에 stat streaming 을 입력합니다 현재 사용하고있는 Streming Pool의 사이즈는 1000.00MB 입니다디폴트값으로 1000.00MB를 가지며 해당 수치를 값을 늘려주면 해당 에러가 발생되지않습니다 Config 폴더에 있는 DefaultEngine.ini 의 코드를 변경하겠습니다 코드의 /Script/Engine.Rendering 부분을 수정하시면되겠습니다수치를 3000으로 설정해주었습니다r.TextureStreaming = truer.Streaming.PoolSize = 3000코드를 수정후 프로젝트를 Generate 해주겠습니다 Streaming Pool Size가 3000으로 변경되며 더이상 에러가 뜨지않습니다
프로그래머스(C++) - 콜라 문제
·
C++ 프로그래머스/기타 문제
●문제●간단한 설명마트에 줘야하는 병수 int a마트가 교환해주는 콜라 병수 int b상빈이가 가지고있는 빈 병의 갯수 n a갯수를 주면 b개를 줌 a가 3이고 b가 1이면 3개를 주면 1개를 줌 즉 교환비를 뜻함교환을 했을때 받는 콜라의 갯수의 총 합을 구하면됨a가 3 b가1 n이 20일경우 처음에 20 / 3 = 6이니 6개 그리고 남은 병의갯수는 a갯수보다 부족해서남은 콜라 2개와 돌려받은 6개의 콜라를 합쳐서 8개8개에서 다시 8 / 3 = 2개 그리고 남은 병의 갯수는 2개합쳐서 4개4개에서 다시 4 / 3 = 1개 그리고 남은콜라 1개를 합쳐서 2개2개는 a갯수보다 모자라니 더이상 교환불가능여기서 교환한 6개, 2개, 1개 합쳐서 9 그 합친 값을 return ●내가 푼 방법가지고있는 콜..
프로그래머스(C++) - 푸드 파이트 대회
·
C++ 프로그래머스/기타 문제
●문제 ●간단한 설명string answer, vector food값food의 0번 인덱스는 물 상시 한개결과값의 제일 중앙 인덱스에 "0" 이 있어야함왼쪽과 오른쪽의 배치는 순서만 바꿔서 인덱스의 갯수와 같이 배치되어야함 ●내가 푼 방법for문을 통해서 1부터 food.size()까지 돌리고왼쪽string, 우측string 선언food[i] / 2 를 해서 왼쪽 선수가 받을수있는 음식의 갯수를 구합니다2중for문을 사용 음식의 갯수만큼 돌린다음왼쪽String에 들어갈 문자열을 구합니다Algorith헤더를 추가한뒤 Reverse함수를 사용하여 왼쪽String의 값을 뒤집습니다왼쪽String + "0" + 오른쪽String으로 값을 도출 ●알아야하는 개념 / 알게된 개념2중for문을 돌릴때 두번째 for문..