목록전체 글 (194)
초보 코린이의 성장 일지
전에 스킬이 캐릭터 주변을 회전하는 스킬을 구현했었다 하지만 피격구현은 하지 않아 구현해볼 것이며, 그다음 만들어 볼 스킬은 손에서 직접적으로 던지는 스킬로 구현해 볼 것이다. 우선 맥락은 같고 손에서 나가는것도 동일하나 방향이 정면으로 나가고, 애니메이션만 바뀐다는것만 알면 된다. 스킬이 도는 모션만 구현했을뿐 피격까진 구현하지않아 HitData는 빼고 진행했었다. 이제는 피격이 필요하므로 엑셀표로 값들을 수정 할 것이다. Weapon_Around로 가서 임포트해서 가져온 엑셀을 설정해준다. 이제 값들은 넣어줬으니 Skill_Around로 가서 피격에 필요한 행동을 넣어 줄 것이다. 충돌체 Sphere를 클릭 후 이벤트로 가서 On Begin Overlap를 눌러서 생성해준다. 스피어에 닿는 순간을 나..
텔레포트를 구현했지만 시야를 아래로 두고 사용하게되면 바닥에 몸이 끼는 경우와 벽 위로 쓰게되면 뒤로 떨어지는 버그아닌 버그가 발생한다. 이걸 잡아주고 스킬을 또 구현해 볼 것이다. 1. Location을 핀분활을 하고, 일단 X, Y는 그대로 사용할 것이고 높이인 Z축만 설정해주면 된다. 2. 캐릭터 가지고 조종하면 되는것이므로 Character안에 Capsule Component를 받아 Get Scaled Capsul 함수로 연결한다. 함수 선언시 보면 Un이 존재 하는데 이건 순수한 값으로만 설정한다는 의미이고 안 붙은거는 변경이 가능할때 사용하면 된다. 3. 캡슐에 반 크기라는 의미는 곧 캐릭터에 반 크기와 동일하다 그만큼은 Z축으로 연결해서 위로 올려준다. 이러면 바닥으로 꺼지는 일은 이제없다 ..
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..
https://www.youtube.com/watch?v=2HGlhSWW9OU 완료) - 예외처리 조금 더 필수 - 컴포넌트로 전환하기
카메라 시점 연산 및 Fist 충돌, Shake 추가를 해보겠다. Sphere 총 4개의 충돌체가 필요하다 양손, 양발 Mesh 소켓에 추가해 주게 될 것이다. 소켓을 알맞는 부위 4군데에 적용해준다. 다시 Combo_Fist로 돌아와서 이벤트그래프 작성을 해준다. 부모에 있는 Collisions를 가져와서 for문을 돌린다. Array Element가 컴포넌트이며, 충돌체기 때문에 붙이려면 AttachComponent To Component로 선언해줘야한다. Character의 Mesh에 붙여야 하므로 가져와서 붙여 준다. Attach 안에 Nmae 부분 보라색은 이름을 표기해주는 부분이며, 상수(가변) 문자열이라 대소문자 구분을 안해줘도 된다. Get Object Name으로 연결해주면 String에..
전투 패링 반격 https://www.youtube.com/watch?v=jJh0IFX-1HE
경직 동작과 카메라가 흔들리면서 타격감을 극대화 시키는 작업을 해볼 것이다. Enemy로 가서 피격됐을때 상태를 설정할 것이다. 사용할 변수 중 HitData, DelationActors 사용 CameraShake로 블루프린트 클래스 생성해준다. 동작만을 위한 클래스라 이벤트그래프는 작성안 할 것이다. 값 설정은 딱 Oscillation, Y, Z 축만 해준다. Duration = 진동하는 시간 Blend in Time = 카메라가 흔들리는 상태에서 현재 상태로 오는데 걸리는 시간 Blend Out Time = 흔들리면서 원래 카메라로 돌아오는 시간 Amplitude = 진동 강도 Frequency = 진동 기간(시간) initial Offset = 최초 시작하는 부분 설정 zero, random 2개 ..
컴파일 순서 전처리기(.h) -> 컴파일(.cpp) 결과로 오브젝트 파일 생성 -> 링커 lnk파일 -> obj 합처져서 -> exe 파일 -> 컴퓨터 구조 ssd에 저장 지역변수 : Stack 영역 전역변수 : Data 영역 동적변수 : Heap 영역 메모리 구조, 지역변수 - 스택, 동적할당 변수 - 힙에 각각 할당하는 이유 Stack 영역 : 지역변수가 저장하는 이유, 스택은 함수가 호출될때 스택프레임이 만들어지는데 1메가(1023 byte)정도를 가지고있다 데이터를 쌓아가는 구조 함수가 호출될때 처음에 처음 호출된 곳 주소를 넣고 넘길 파라미터를 넣고 넘어갈 주소를 넣는다. 함수호출이 되면 넘어갈 주소를 꺼낸다. 안쪽에 함수들 안에있는 지역변수들을 다시 담고 연산이 끝나면 소멸을 시작해야 하므로 ..
콤보 도중에 임팩트 스킬이 나가도록 만들고 또 한 사운드까지 나오게 해볼 것이다. 2가지 효과중에 Lightning를 사용할 것이다. 사용할 변수 어느 지점에 등장하게 만들기 위해 Spawn Emitter at Location를 선언한다. Hit Data를 가져와서 핀분활을 해준다. 전방 얼마만큼 보정을 해야 하므로 Actor 위치랑 Actor 회전 더해서 값을 넣어준다. 두 값을 Rotate Vector로 받아줘야 한다. 잘보면 Location은 두 값을 더해진게 들어가고 Rotation은 그냥 들어간다 그 이유는 파티클에서 이미 회전이 되어있기 때문 ex) - 크기가 100이고 45도로 회전했다면 그 위치만큼 이동을 하게 된다. 피라고라스 공식을 사용해서 100 * 1.414 = 141정도 나오면 4..