목록언리얼 (116)
초보 코린이의 성장 일지
ABP_Player로 가서 미리 애니메이션을 추가해 주고 진행할 것이다. 스테이트 머신과 포즈 추가 필요한 애니메이션 몽타주를 생성해 준다. 엑셀표에 넣어줘야 하기 때문이다 FullBody로 바꿔주고, 시작지점과 끝지점 설정 그리고 임팩트를 넣어줄 파티클 하나를 노티파이 추가해주고 넣어준다. 파티클은 P_Cube_Mesh_Test로 설정, Attached는 체크안해주면 안나온다. Warp는 Weapon_Combo를 상속 받는게 아니다 휘두르는 무기가 아닌 스킬같은 것으로 Weapon으로부터 직접 상속을 받아서 진행할 것이다. 엑셀가져와서 이름만 바꿔서 수정해 준다. 안에 값 수정, 1번만 사용할 것이므로 다 지워주고 몽타주만 레퍼런스 복사 후 넣어준다. Weapon_Warp를 만들어 주고 임포트한 데이터..
편한 관리를 위해 폴더를 나눠준다. Hammer 폴더 생성 Sword와 똑같이 생성해준다. 뷰포트로 와서 SkeletalMesh가 아니니 StaticMesh로 컴포넌트 추가해준다. 캡슐도 동일 해머는 범위가 크게 때리도록 만들기 위해 각도를 맞추고 캡슐 크기를 늘려준다. 무기를 여러개 관리하게 되므로 플레이어상에 한번에 여러 무기를 장착 시키기에는 한계가 있다. 특히 해머는 너무 크기 때문에 입력시에만 손에서 나오게끔 생성해 볼 것이다. 소켓을 설정해줘야 한다. Hand_R 기준으로 소켓을 추가해준다. 이제 이벤트 그래프로 간다. 소켓 이름 방금 설정한걸로 바꿔준다. 무기를 그냥 꺼내기만 할 것이므로 Begin Equip만 남겨두고 Unequip는 제거해준다. Set Visibility는 New Visi..
카메라 시점 연산 및 Fist 충돌, Shake 추가를 해보겠다. Sphere 총 4개의 충돌체가 필요하다 양손, 양발 Mesh 소켓에 추가해 주게 될 것이다. 소켓을 알맞는 부위 4군데에 적용해준다. 다시 Combo_Fist로 돌아와서 이벤트그래프 작성을 해준다. 부모에 있는 Collisions를 가져와서 for문을 돌린다. Array Element가 컴포넌트이며, 충돌체기 때문에 붙이려면 AttachComponent To Component로 선언해줘야한다. Character의 Mesh에 붙여야 하므로 가져와서 붙여 준다. Attach 안에 Nmae 부분 보라색은 이름을 표기해주는 부분이며, 상수(가변) 문자열이라 대소문자 구분을 안해줘도 된다. Get Object Name으로 연결해주면 String에..
경직 동작과 카메라가 흔들리면서 타격감을 극대화 시키는 작업을 해볼 것이다. Enemy로 가서 피격됐을때 상태를 설정할 것이다. 사용할 변수 중 HitData, DelationActors 사용 CameraShake로 블루프린트 클래스 생성해준다. 동작만을 위한 클래스라 이벤트그래프는 작성안 할 것이다. 값 설정은 딱 Oscillation, Y, Z 축만 해준다. Duration = 진동하는 시간 Blend in Time = 카메라가 흔들리는 상태에서 현재 상태로 오는데 걸리는 시간 Blend Out Time = 흔들리면서 원래 카메라로 돌아오는 시간 Amplitude = 진동 강도 Frequency = 진동 기간(시간) initial Offset = 최초 시작하는 부분 설정 zero, random 2개 ..
콤보 도중에 임팩트 스킬이 나가도록 만들고 또 한 사운드까지 나오게 해볼 것이다. 2가지 효과중에 Lightning를 사용할 것이다. 사용할 변수 어느 지점에 등장하게 만들기 위해 Spawn Emitter at Location를 선언한다. Hit Data를 가져와서 핀분활을 해준다. 전방 얼마만큼 보정을 해야 하므로 Actor 위치랑 Actor 회전 더해서 값을 넣어준다. 두 값을 Rotate Vector로 받아줘야 한다. 잘보면 Location은 두 값을 더해진게 들어가고 Rotation은 그냥 들어간다 그 이유는 파티클에서 이미 회전이 되어있기 때문 ex) - 크기가 100이고 45도로 회전했다면 그 위치만큼 이동을 하게 된다. 피라고라스 공식을 사용해서 100 * 1.414 = 141정도 나오면 4..
인터페이스를 활용하여 동작들을 관리 블루프린트 -> 블루프린트 인터페이스 생성 -> 함수 추가 및 설정 구조체도 하나 생성해주고 지정해준다. Enemy로 가서 상단의 클래스 세팅을 누른 후 부모 클래스를 지정해주고 인터페이스 만든 IDamage를 추가해준다. 그럼 왼쪽에 인터페이스란에 들어온다. 이제 정의를 해주면 된다 사용할 변수들과 인터페이스 목록 컴포넌트 추가를 눌러서 -> StateComponent를 생성 -> get으로 가져와서 On State Type 이벤트 바인딩에 연결 -> 커스텀 이벤트 이름을 OnStateTypeChanged로 동일하게 수정 -> switch 만들어주고 연결 -> 그다음 Hitted 연결 무언가 때리면 State Type가 바뀔테니 스위치 문에서 Hitted로 들어가서 ..
무기 애니메이션 적용 및 콤보 구현을 시작해 보겠다. 칼을 담당해주는 Combo_Sword 클릭 BeginPlay 이벤트도 오버라이딩한 상속 받은 상태기 때문에 부모를 먼저 콜 해줘야한다. 부모의 BeginPlay을 콜해준다. Mesh에 칼을 붙여줘야 하기 때문에 Character 안에 있는 Mesh를 호출해준다. 소켓은 Holster_Sword로 위치를 골반쪽에 붙여준다. 칼을 들었으면 해제도 해야 하므로 Unequip도 동일하게 연결해준다. 칼 장착도 동일하게 노드를 연결해준다. 소켓은 Hand_Sword로 손으로 지정해준다. 오버라이딩 하는 방법은 직접 함수를 눌러서 하는 방법이 있고 custom으로 할 수 있다. 직접 눌러서 하는 경우 = 복잡한 이벤트 처리 custom = 간단한 이벤트 처리 사..
디테일 부분에서 빼먹을게 생길만큼 어려운 내용이다. 그래도 정리를 시작해 보겠다. 우선 무기를 바꾸기 위한 기본적인 틀을 만들어 보겠다. 변수유형 weapon type로 Tpye와 PrecType를 만들어준다. Type를 Prec Type에 세팅해주고 현재 타입 Type에 받아준다. 이벤트 디스패처를 만들고 파라미터 2개를 생성해준다. 디스패처안에 Type 자리로 받아준다. SetUnarmedMode에서 교체할 Type를 콜해준다. Unequip 상태니 In New Type는 Unarmed로 지정해준다. 이제 SetMode 무기가 원래 장착 안되어 있다면 장착하고 장착하고 있다면 해제하고 장착하도록 구현할 것이다. 장착할 SetMode에 무기를 파라미터도 받아준다. 새로 장착할 무기가 기존 타입과 같다면..
새로운 파일을 생성하고 지난시간까지 사용하던 폴더에서 필요한 것만 가져와서 다시 작업을 해보겠다. 플레이에 기본적인 틀은 거의 동일하니 큰 상관은 없을 것이다. 도형들과 머터리얼 색을 입혀서 단순하게 만들어 본 것이다. 이제 FSM이 아닌 State로 이제 움직임을 변경해 볼 것이다. 그래서 ABP 플레이어와 상대방(적)을 한번에 묶어서 사용할 것이다. 이름만 바꿔준 것 일뿐 전과 동일하다. 내부적인건 이제 수정해 볼 것이다. 앞에 블로그 내용에도 나와있는 ABP_Player 이벤트 그래프이다. 이제는 통일할 것이기 때문에 필요없는 동작들은 제거해주고 위처럼 필요한것만 남겨두게 될 것이다. 또 한 변수 기존 Player 이름 및 유형을 Character로 변경해준다. 폴더에 오른쪽 마우스 클릭 -> 블루..
상대방에게 무기로 공격했을때 데미지를 판별해 줄 수 있는 방법을 생각해야한다. Apply Damage를 선언해준다. 검색해보면 다른 3가지 Apply가 나오는데 지금은 무기를 사용해여 때릴것이기 때문에 다른건 사용하지 않는다. Base Damage = 0이면 동작하지 않는다. 최소한 0.1이나 음수도 좋으니 숫자를 바꿔줘야한다. Event Instigator = 플레이어가 칼을 휘두르기 때문에 플레이어가 된다. Damage Causer = 칼 자체가 된다. 전에 올린 Sword에서 노드 몇개만 추가된 상태이다. Sword의 소유자 Get Owner을 사용하여 불러주고 Get Instigator Controller으로 노드를 연결해준다. Damage Causer은 위에 정리해놓은 것처럼 Sword를 불러야..