콜리전 트레이싱 함수 콜리전 트레이싱을 하기 위해서는세 가지 카테고리를 함수 이름에 작성해주어야 한다ex. {처리방법}{대상}{처리설정} 처리방법 LineTrace-/BoxTrace-/SphereTrace-/CapsuleTrace-/… Sweep- Overlap-대상 Test: 무언가 감지 되었는지를 테스트 Single 또는 AnyTest: 감지된 단일 물체 정보를 반환Multi: 감지된 모든 물체 정보를 배열로 반환 처리설정 ByChannel: 채널 정보를 사용해서 감지ByObjectType: 물체에 지정된 오브젝트 타입(콜리전 채널) 정보를 사용해 감지ByProfile: 프로파일(콜리전 프리셋) 정보를 사용해서 감지캐릭터 공격의 충돌 감지 예시캐릭터의 위치에서 시선 방향으로 물체가 있는지 감지하는 ..
충돌체 제작 방법 충돌체를 설정하는 방법은 총 3가지가 있으며 아래와 같다추가적으로, 하나의 액터에는 아래의 세 가지의 충돌체를 모두 설정할 수도 있다 - Primitive Component일반적인 경우에는 루트 컴포넌트로 설정되는 프리미티브 컴포넌트(캡슐, 박스, …)가 충돌체 역할을 한다 - StaticMesh Component스태틱메시 에셋을 그대로 충돌체로 사용하는 방법으로스태틱메시를 더블클릭하면 열리는 스태틱메시 에디터에서 해당 충돌체 영역을 설정하고 확인할 수 있다스태틱메시 에셋에 콜리전을 넣으면, 비주얼과 충돌 기능을 모두 설정할 수 있다 - Physics Asset일반적으로 캐릭터의 이동은 캡슐 컴포넌트를 사용해서 처리한다하지만 특정 상황에서 캐릭터의 각 관절 효과가 적용되는 RagDoll..
애니메이션 노티파이 애니메이션을 재생하는 동안 원하는 타이밍에 애님 인스턴스의 멤버 함수를 호출하는 기능이다애니메이션 노티파이는 애니메이션 시퀀스와 애니메이션 몽타주 모두 사용가능하다애니메이션 노티파이의 활용 공격 애니메이션인 경우에 특정 애니메이션 프레임에서 충돌 검사 로직을 처리해야 한다이때 애니메이션 노티파이를 활용하면 구현이 가능하다애니메이션 노티파이 실습 Notifies 섹션 빈 공간에 우클릭을 하고Add Notify를 통해 노티파이를 만들 수 있다3번 공격을 하는 경우라면, 적절한 위치에 CheckHit Notify를 3개 작성하면 된다 그리고 AnimInstance에 “AnimNotify_노티파이명()”의 멤버 함수와BroadCast할 멤버 변수를 만들어줘야 한다또한 UHT에 의해 언리얼..
스테이트 머신의 문제스테이트 머신을 사용해서 단순한 동작 로직을 구현하는 것은 괜찮지만점점 추가될수록 복잡해지는 문제가 발생한다애니메이션 몽타주 특정 상황에서 원하는 애니메이션을 재생시키는 기능이다여러 애니메이션 클립들의 일부를 쉽게 선택하여 새로운 애니메이션을 생성하는 방법이다이때 섹션 단위로 애니메이션들을 관리한다 애니메이션 몽타주 애셋 생성Anim Slot Manager에서 우리만의 Group과 Slot을 만들어서 관리하는 것이 좋다Add Group을 통해 그룹을 추가하고해당 Group이 클릭된 상태로 Add Slot을 통해 Slot을 추가할 수 있다그리고 해당 Group의 Slot을 통해 우리가 원하는 몽타주를 쉽게 재생시킬 수 있다 몽타주를 재생하는 아래와 같은 부분에서도Montage 섹션에 D..
State Machine (= State + Rule) 반복 수행해야 하는 동작 단위인 스테이트를 정의하고 스테이트 간의 전환(Rule)을 정의하는 부분이다 해당 머신이 돌아가기 시작하면, 전환에 따라 하나의 스테이트가 지정되고 반복 수행된다Rule스테이트가 전환되기 위한 조건이다스테이트 머신에서는 이를 트랜지션(Transition)이라고 부르지만언리얼 엔진에서는 트랜지션 대신 룰이라고 부른다 CharacterMovement Component 상태 속성StateMachine을 포함해 애님 그래프에서 여러 애니메이션 재생을 위한 속성 값이 필요하고CharacterMovement 컴포넌트에서 제공되는 다양한 캐릭터의 상태 속성을 이용하면 된다IsFalling(): 현재 공중에 떠있는지IsSwimming..
AnimInstance스켈레탈 메시를 소유한 폰의 정보를 받아서 Anim Graph 가 참조할 데이터를 제공한다 블루프린트와 C++로 구현 가능하다 AnimInstance의 블루프린트 애셋에는 Anim Graph 기능이 제공된다 Anim Graph업데이트된 변수 값에 따라 지정된 애니메이션을 재생하고 제어하는 부분이다상황에 따라 적합한 애니메이션을 체계적으로 재생할 수 있도록 스테이트 머신 기능을 활용할 수 있고 블루프린트로만 구현 가능하다 AnimInstance 생성 폰의 속도에 따라 다른 애니메이션을 재생하기 위해서는 프레임마다 폰의 속력과 AnimInstance의 CurrentSpeed 속성을 연동해야 한다연동하는 방법은 아래 두 가지가 있다1. 폰의 Tick() 함수에서 AnimInstan..
Control Rotation플레이어 컨트롤러의 컨트롤 로테이션은플레이어의 의지의 대표적인 속성 중 하나이다 게임 세계의 물리적인 요소가 아직 고려되지 않은 상태이다 Controller와 Pawn, 그리고 컴포넌트 간의 관계 Controller - Pawn bUseControllerRotation 속성은 컨트롤 로테이션 폰의 회전을 동기화 여부를 결정한다true로 설정하게 되면,컨트롤 로테이션의 축 값이 캐릭터의 Rotation 축 값과 완전 동기화가 된다 Pawn - SpringArmComponent bUsePawnControlRotation 속성은 폰의 회전 값이 연동될지 안될지 결정한다false로 설정하면,폰이 회전해도 스프링암은 회전하지 않는다컷씬을 촬영할 때, 플레이어의 회전에도 스프링암이 움직..
새 C++ 클래스 > Character 부모 클래스를 상속받아 생성하면 된다// SCharacter.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include "SCharacter.generated.h"UCLASS()class STUDYPROJECT_API ASCharacter : public ACharacter{ GENERATED_BODY()public: ASCharacter();};// SCharacter.cpp#include "Character/SCharacter.h"#include "Components/CapsuleComponent.h"#include "GameFramework/CharacterMovementC..
기존 입력 시스템 vs. Enhanced Input System 기존 입력 시스템은 입력 관련 설정을 해둔 뒤에 게임 로직에서 입력 값을 처리한다그에 따라 게임 플레이 중에 플레이어의 키세팅 변경에 대응이 불가능하다그래서 플레이어의 입력 관련 설정을 플레이 중에도 변경 가능한 것이Enhanced Input System이다Enhanced Input System의 동작사용자의 입력 데이터를 최종 함수에 매핑하는 과정을 체계적으로 구성한다입력을 처리하는 주체는 Input Action이고 입력과 액션이 맵핑하는 것이 Input Mapping Context이다 Input Action에서는 들어온 입력을 어떻게 재가공(Modifier)하고어떻게 입력 이벤트를 활성화(Trigger)할지의 설정을 진행한다마지막으로는 ..