Unreal - 캐릭터 광역공격 만들기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
지금의 공격방식은 캐릭터가 들고있는 칼에 오버랩 되어야 데미지를 입는방식을 사용했었다 그런데 지금 제작해놓은 광역스킬 그리고 앞으로 만들 범위스킬의 경우이런 광역공격의 경우 직접 칼에 오버랩되는경우가 아니기 떄문에 광역공격 오버랩 박스를 따로 만들어주기로했다오버랩박스의 경우 Actor클래스로 만들어서 Overlap으로 처리해보겠다  액터클래스 AOEAttackCollisionActor을 생성씬컴포넌트를 루트로그밑에 CollisionBox인 BoxComponent를 생성루트에 붙혀준다음 크기를 기본크기인 10으로 변경아무것도 반응하지않게 설정하고 pawn과의 오버랩은 반응하게 기본설정을 해줬습니다 그럼 이 박스를 오버랩설정을 먼저 해줍니다오버랩하는법은 이전글을 참고해주세요https://lucodev.tis..
Unreal - DataTable로 스탯 관리하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
보통 게임에서는 기획 밸런스 담당자분이 밸런스를 담당하기위해 수치를 담당해줄텐데데이터값들을 직접 전부 하드코딩해서 관리하면 밸런스패치를 할때마다프로그래머가 새로 다 값을 수정하고 다시 실행파일을 패키징해버려야하기 때문에 코드와 데이터를 별도로 들고있는게 매우 좋다. 그러므로 데이터테이블로 플레이어의 스탯 을 관리해보겠다데이터테이블을 사용하기위한 게임인스턴스르 만들어줍니다GameInstance를 상속받아서 새로운 c++클래스를 만들어주자StatGameInstance이라고 이름을 붙혀주겠습니다 그리고 구조체 데이터 테이블을 만들어주겠습니다FTableRowBase를 상속받아줍니다 (c++클래스 제작할때는 빈 c++로 제작 public FTableRowBase를 작성해야한다는뜻)이제 인스턴스에서 데이터테이블의 ..
Unreal - EXCEPTION_ACCESS_VIOLATION 크래시 고치기
·
Unreal 디버깅
코드를 수정하다보면 이런 Exception_Access_violation에러가 나올때가 있다(저같은 언리얼 응애들이 많이 봅니다) 이런경우는 널(null)포인터 에러 오류나 잘못된 메모리에 접근해서 생기는 에러이다한마디로 가리키는 포인터가 아무것도 없는데 그 포인터로 먼가를 하니(아무것도없음) 아무것도 없음 아 이걸 해 ! 를 해버리니 엔진이 튕겨버리는것이다에러 콜스택 로그를 잘 보면 HitTestCrow.cpp 159번줄에서 에러가 났을 가능성이 제일 크다159번의 코드를 잘 보자디버깅모드로 실행해보자긴 사투 후에 에러의 오류를 찾았다위젯 포인터는 게임 시작마다 새로 생성하는데이전포인트는 반드시 RemoveFromParent 하고 뒤에 +nullptr 처리해줘야 안전하다는것이다이미 파괴된 (destro..
Unreal UI - 적 정보가 담긴 위젯 띄우기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
1. 더미를 공격시 Pitch(위아래) 로 한번 흔들거림2. 더미를 공격시 더미가 빨간색으로 잠시 바꼇다가 돌아옴3. 더미르 공격시 더미의 위쪽에서 데미지UI가 나옴4. 더미를 공격시 플레이어UI 위쪽에서 더미의 HP가 나옴4번 적을공격하면 때린객체의 HP 프로그래스바 UI 그리고 이름이 나오게 해보겠다 사용할 적의 위젯부터 만들어주겠다 userwidget을 부모로한 EnemyUIDisplayWidget을 만들어주었다이렇게 총 3가지를 표시해보겠다(앵커 설정, 변수이름 설정도 전부다 꼭 해주도록 하자) 일단 해당 위젯을 띄워보도록 하자뷰포트는 캐릭터화면에 띄워진다 허수아비에서 이름, 그리고 hp를 설정해주고지금 텍스트와 프로그래스바 사이가 빈공간이없으니 Spacer 도 추가해줬다그러면 지금 보이고있는 d..
Unreal - 75퍼센트 무한로딩
·
Unreal 디버깅
언리얼 프로젝트를 하다가 75퍼센트에서 무한로딩 걸리면서 프로젝트가 열리지않는 경우가 생겼다이경우 a가b를 참조하고 b가 a를 참조해서 무한참조하면서 에러가 나거나대부분 생성자에서 문제가 있는경우가 크다 생성자에있는 코드를 주석처리하거나 중단점f9 을걸면서 확인해보면 문제가 있는곳을 확인할수있다확인해보니 overlapsword의 ConstructorHelpers에서 에러가 난것이였다해당 문제를 주석처리하니 잘 작동한다
Unreal UI - 데미지 표기(HUD)
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
1. 더미를 공격시 Pitch(위아래) 로 한번 흔들거림2. 더미를 공격시 더미가 빨간색으로 잠시 바꼇다가 돌아옴3. 더미르 공격시 더미의 위쪽에서 데미지UI가 나옴4. 더미를 공격시 플레이어UI 위쪽에서 더미의 HP가 나옴 3번 을 구현해보도록 하겠습니다.데미지 허드 - 즉 데미지를 입히면 머리위에 숫자TEXT가 뜨는걸 HUD라고함더미 한테서 WidgetComponent를 생성root에 붙히고 위치를 변경해준다이제 이 위젯컴포넌트에서 데미지텍스트가 출력되도록 해보겠다 출력을 위해 데미지위젯을 하나 만들어주겠다UserWidget을 부모로 위젯을 하나 생성합니다전 DamageWidget이라고 이름붙혀주었습니다 방금만든 DamageWidget이름인 UseWidget을 블루프린트로 변경하고CanvasPanel..
Unreal 적 - 피격 리액션(경직) 구현하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
지금 적이 NavMeshBoundsVolume부피를 차지해서이동방식이 NavMeshBoundsVolume 안에 클릭한곳으로 이동하는건데 적이 있으면 바닥부분이 흰색으로 되서 흰색부분은 클릭을할수없어 매우 조작감이 불편하다 그럼 적이 NavMeshBoundsVolume를 차지하지않도록 바꿔보자 Details > Navigation 섹선아래 Can Ever Affect Navigation(네비게이션에 영향 주기 가능)을 체크해제하자SetCanEverAffectNavigation을 false로변경하면됨그럼 이제 문제없이 작동한다 적(더미)를 타격하면 타격감이 있도록 바꿔보겠다추가할내용은1. 더미를 공격시 Pitch(위아래) 로 한번 흔들거림2. 더미를 공격시 더미가 빨간색으로 잠시 바꼇다가 돌아옴3. 더미르 ..
Unreal 캐릭터 - Overlap이벤트, 공격위치 판별하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
캐릭터와 적과 데미지를주고받을려면 Overlap이벤트가필요함일단 적이 없기떄문에때릴 허수아비를 하나 만들어주고(캐릭터를 부모로)지금은 플레이어가 스태틱메시만 들고있기때문에 CapsuleComponent를 달아둔 검을 하나 별도로 만들었다 그럼 원래 달고있던 스태틱메시 대신에 이 액터를 자손으로 달아주자 이렇게 하면 캐릭터한테 차일드액터로 overlapSword 즉 칼이 할당된다이제 기본적인 스태틱메시가 아닌  콜리전을 가진 별도의c++클래스 swordActor가 달렸다 이제 오버랩 이벤트를 발생시켜보자 칼에서 오버랩이벤트를 발생시킬거라 칼 c++를 수정해준다이런식으로 생성자에 OnComponentBeginOverlap을 써주고OnComponentBeginOverlap을 f12눌러주면이화면이 뜬다그리고 다..
Unreal 캐릭터 - 물체 가속회전(EaseIn),피벗 위치변경, 액터스폰
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
이제 남은 e스킬 현재 각성과 비각성의 차이가 없고 스킬이 너무 심심하다컨셉은 던전앤파이터의 화룡강림이라는 스킬처럼 큰 둔기가 내려찍도록 해본다칼이 필요하니 actor클래스인 GreatSword 액터를 하나 만들어준다사용할 둔기이다문제가 있다 현재 피벗이 무기에서 벗어나서 밑에 있다 피벗을 한번 맞춰보도록 해주자모델링 모드를 클릭후에xForm의 EditPivot마우스 휠을 누른상태로 이동시켜준다손잡이 부분에 옮겨주고 저장 그러면 피벗이 영구 변경된다부모역할을 해줄 scene컴포넌트와 칼로사용할 스태틱메시컴포넌트를 선언해준다씬 컴포넌트를 만들고 루트컴포넌트로 바꾼다음swordComp이라는 스태틱메시 컴포넌트를 만든뒤 루트컴포넌트에 붙히고컨스트럭터헬퍼로 에셋을 지정해주는 코드이다 씬 컴포넌트가 루트컴포넌트로..
Unreal UI - 프로그래스바 모양 변경하기
·
Unreal 프로젝트 다이어리/첫번째 프로젝트
현재 나의 프로그래스바 이다(음 개구려...)너무 네모라서 별로 보기 좋지않다 게임에서 흔히 보는 프로그래스바는살짝 기울어져있거나 모양이 다른 모양이다그래서 모양을 바꿔보도록 하자내가 바꿀 모양은 평행사변형 모양이런모양으로 바꿔보도록 하겠다일단 이미지를 구해주자길다란 평행사변형으로 구해보자 누끼를 따주고 업스케일링을 해줬다프로그래스바에 들어갈 메테리얼을 수정해주자opacity옵션에 해당 이미지를 rgp와 알파값을 곱해준다음 넣어주면 된다이미지채우기에 해당 메테리얼을 넣어준뒤배경이미지에는 기존 얻어왔던 이미지그리고 이미지채우기에는 메테리얼을 연결해주면된다그리기 방식을 배경과 채우기 전부 image로 꼭 변경해주자나는 마나는 그냥 RoundBox hp는 평행사변형으로 바꿔주었다이렇게 모양이 잘 바뀐다