본문 바로가기

강동새싹언리얼수업/최종프로젝트

(10)         글쓰기    
SurvivorsTemplate epic + 기본적으로 게임에 대한 기본 규칙들을 지정하는 곳이 GameMode, + 게임이 돌아가고있는 상황에 대한 정보들을 저장하는 곳이 GameState. [AGameModeBase] + 예전 언리얼 버전에서는 GameMode를 베이스로 사용했는데, 4.14버전 이후로 GameModeBase라는 것이 생겼다. 그 이유는 여러 게임에 호환성있게 사용하기 위함인데, GameMode는 기본적으로 멀티플레이어슈팅게임에 어울리도록 구성되어있다. (아마 언리얼이 그런 장르를 기본으로 만든 엔진이라서 그럴지도) 그리서 다른 종류의 게임에서 사용할 수 있도록 GameMode의 부모인 GameModeBase를 만들었다. 내부에 다양한 함수가 있지만, 기본적으로 (작성 순서대로 실행됨) // Init InitGame - 해당..
카메라 시점 전환 마우스 표시 모드 void ANPC::OverlapBeginTB(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OhterComp, int32 OthterBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { //GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Magenta, TEXT("Debug")); if (WidgetRef) { itemShopWidget= CreateWidget(GetWorld(), WidgetRef); itemShopWidget->ownerNPC = this; if(itemShopWidget)itemSh..
마우스클릭으로 포제스하기 Possess character가 Possess되면 마우스커스가 나타나게 한다. RightMouseButton 이벤트를 사용하여 처리한다. HitActor를 Pawn으로 Cast해서 valid한경우만 처리한다. 다시 되돌릴걸 생각하여 변수를 저장해놨지만. 그냥 swap하면 될것 같다. TimeLine과 Lerp을 이용해 자신과 타겟Pawn을 교체한다. timeline은 float를 만들고 1초짜리 0~1로 변화하는 건데 거리에 따라 변화가 필요할듯 하다.
5초간 피해 계산하기 어떤 가격이 가해졌을때 이전 5초간의 피해누적을 계산해보자. LevelBlueprint를 연다 일단 실험을 위해 랜덤하기 피해를 만들어보자. 타이머 설정시 시간은 고정되므로 피해량만 조정하자. Add Custom Event를 추가해 Apply Damage로 피해를 전달하는데 일단 self로 자신에게 전달하자 시계를 만들고 timer변수를 승격해주자 충격이 전달되면 충격시간을 저장하는 tempTime과 tempDamage배열에 저장해준다. 5초간의 충격을 누적할 변수와 5초가지난 배열의 개수를 저장할 변수들을 만들고 초기화해준다. 5초가 지난 것들은 RemoveCnt에 세어놓고 그렇지 않은것들의 TempDamage를 SumDamage에 저장해 놓는다. ForLoop 문이 끝나면 5초가 지난 데이터들은 지워..
폰빙의 Possess 게임의 여러 플레이가능 캐릭터를 전환하거나, 캐릭터가 (차량, 비행기, 탱크 등의) 비히클에 탑승하도록 하거나, 별도로 제어되는 다른 폰(플레이어가 제어할 수 있는 일체형 기관총같은 것)을 제어하도록 하려는 경우, 거기에 입력 정보를 전달하기 위해서는 그 캐릭터 또는 폰 을 빙의 (Possess)하는 것이 좋을 것입니다. 폰의 조종을 담당하는 것은 플레이어 컨트롤러 이며, 폰의 빙의에는 플레이어 컨트롤러 지정이 필요합니다. 폰 자체는 인간형 캐릭터일 필요 없이 기본 이동을 적용하여 플레이어가 제어할 수 있도록 하고자 하는 그 무엇이든 될 수 있습니다. 반면 캐릭터는 콜리전과 캐릭터 무브먼트 컴포넌트가 기본적으로 포함되어 있는 형태의 폰이기에, 기본적인 인간형 동작이 가능합니다. 구현 안내 프로젝트에서 P..
Moving Actor - TimeLine Lerp BP_MoveCube를 액터로 만들고 Sphere와 컴포넌트를 추가해준다. TimeLine을 추가하고 +Track에 float를 추가하고 이름을 XLocation으로 한후 0초에 0 5초에 1을 넣는다. TimeLine XLocation을 Lerp의 알파와 연결하고 B를 변수로 승격하고 원하는 거리를 추가한다. TimeLine은 5초동안 Update되고 끝난다. 이후 Forward변수를 true에서 false로 바꿔주고 Move Backward를 호출한다.
NAV LINK PROXY https://docs.unrealengine.com/5.3/ko/overview-of-how-to-modify-the-navigation-mesh-in-unreal-engine/ 내비게이션 메시 수정하기 이 가이드에서는 언리얼 엔진에서 내비게이션 메시를 수정하는 방법을 설명합니다. docs.unrealengine.com Nav Modify 2 - 내비게이션 모디파이어 볼륨 사용하기 내비게이션볼륨을 부분적으로 지울때, priority설정도 가능하다. 3 - 내비게이션 링크 프록시 사용하기 분리된 내비게이션볼륨을 이어줄수 있다. NaviLinkProxy를 부모로 만들어 이벤트를 사용하여 캐릭터를 점프하게 할수도 있다. 배치후 왼쪽 오른쪽 포인트링크의 위치를 이동경로를 표시하는 검정색 선이 원하는 루트가 되..
내비게이션 메시 수정 준비 가이드 AI Move 1 - 필수 설정 언리얼 프로젝트 브라우저(Unreal Project Browser)의 새 프로젝트 카테고리(New Project Categories) 섹션에서 게임(Games) 및 삼인칭(Third Person) 템플릿을 선택합니다. 블루프린트(Blueprint) 와 시작용 콘텐츠 없음(No Starter Content) 옵션을 선택한 뒤 생성(Create) 을 클릭합니다. 섹션 결과 새 삼인칭 프로젝트를 생성했으니 이제 내비게이션 시스템을 배울 준비가 되었습니다. 단계 완료 2 - 내비게이션 메시 빌드 이 섹션에서는 내비게이션 메시 바운드 볼륨(Navigation Mesh Bounds Volume) 을 사용하여 레벨에서 내비게이션을 생성할 영역을 지정합니다. 이 정보는 에이전트가 레벨을 이동하여 목적..
AI 멀티 비헤이버트리 https://unreal6.tistory.com/202 LOL 같은 RPG를 만들기 위해 복수의 적과 플레이어가 돌아다니게 만들어야 한다. 이번에 배운 중요한건 interface를 이용해 함수를 이용할때, 캐스팅은 필요없지만 함수가 위치한 Target은 필요하다는거다. 생각해보면 당연하다 함수가 어디에 있는지 정도는 알아야한다. 물론 interface를 사용하는 방법중 broadcast같은 방법도 있는것 같지만. 예전에 배운 Spline이 포함된 비헤이버 트리를 개조한다. 1. New Level을 만들고 2. NavMesh를 추가하고 3. AIC_Enemy를 만들어 4. BP_Enemy에 설정해준다. 5. BP_Enemy의 Tag 를 enemy로 해준다. 6. Actor를 부모로 BP_Patrol을 하..
1일차 프로토 레벨만들기 프레임워크는 인생언리얼5를 사용하였다. https://github.com/amurorei2000/lifeunreal5 GitHub - amurorei2000/lifeunreal5: 인생 언리얼 5 교과서 인생 언리얼 5 교과서 . Contribute to amurorei2000/lifeunreal5 development by creating an account on GitHub. github.com