언리얼 엔진 5 9

언리얼엔진5 C++로 정복하기(8) 객체들에게 왜 대부분 포인터가 붙을까?

언리얼엔진5 에서 c++로 코딩하다보면 헤더파일부분에서 객체를 선언할때 대부분 포인터가 붙는걸 알 수 있는데 왜 그럴까..? 언리얼 객체 관리 시스템과 관련이 있는데, UGameplayStatics나 USoundBase, UCameraComponent 와 같은 것들은 언리얼 엔진의 엑터나 엑터 컴포넌트와 같은 게임 오브젝트들로 이들은 동적으로 생성되고 관리된다.. 게임 오브젝트들은 실행 시간동안 생성되고 파괴될 수 있는데, 포인터를 사용하여 이러한 객체에 대한 참조를 유연하게 할당하고 해제할 수 가 있다. 그리고 성능 최적화 부분에서 객체는 크기가 크고 복잡한데 객체 자체를 값으로 전달하는 것보다 포인터를 전달하는것이 훨씬더 효율적인데, 포인터를 사용하면 객체의 실제 데이터를 복사할 필요 없이 객체에 접..

언리얼 엔진 5 2024.02.20

언리얼엔진5 C++로 정복하기(7) 델리게이트, 인라인

언리얼 엔진에서 델리게이트는 특정 이벤트나 상황이 발생했을때 호출될 함수들의 리스트를 관리한다. 델리게이트는 발생하는 함수들을 등록하여 이벤트 발생 시 등록된 모든 함수를 호출한다. 언리얼엔진에서는 델리게이트를 사용한다면 AddDynamic 함수를 사용하는데 이것은 언리얼 엔진의 멀티캐스트 델리게이트에 함수를 동적으로 바인딩하기 위해 사용되는 매크로이다. 함수를 AddDynamic을 사용하여 델리게이트를 바인딩 할려면 그 함수는 UFUNCITON() 매크로를 사용하여 언리얼 엔진의 리플렉션 시스템에 등록해야한다. 왜냐면 AddDynamic()이 런타임에 함수를 델리게이트에서 바인딩 하기 때문.. 언리얼로 코딩을 하다보면 가끔 FORCEINLINE 을 함수 선언 앞에 붙일때가 있다. 컴파일러에게 특정 함수..

언리얼 엔진 5 2024.02.19

언리얼엔진5 C++로 정복하기(6) 적 타격

적을 타격하는 기능에 대해 간략히 알아보자 takedamage 나 onhit 내장함수도 있지만 박스 트레이서로 타격을 해보자플레이어가 들 무기 cpp파일에 오버랩 함수를 정의하자. (매개변수는 프리미티브 헤더파일에 매개변수가 작성되있어 복사 하여 붙여넣으면 된다.)무기에 박스 콜라이더 컴포넌트를 추가하고 UFUNCTION으로 정의하여 박스 오버랩 함수를 AddDynamic 으로 불러오자 (델리게이트 바인딩)자신의 무기 부분에 무기 칼날의 시작 부분을 BoxTraceStart로 지정 무기 칼날의 끝부분을 BoxTraceEnd 로 지정을 하고 TArray라는 동적 배열을 이용해 무기를 들고있는 자신은 오버랩 액터로서 제외하고 한번 맞은 대상은 배열에 추가해 투히트가 안되도록 반복문을 사용한다. 다음 UKis..

언리얼 엔진 5 2024.02.05

언리얼엔진5 C++로 정복하기(5) 몽타주(Monatage) 애니메이션

마우스 좌클릭을 눌렀을때 공격하는 애니메이션을 만들려면 어떻게 해야할까? 간단하게 알아보자! 몽타쥬 애니메이션으로 공격 기능을 사용해본 결과 언리얼엔진이 유니티보다 애니메이션 짜기 훨씬 쉽다는걸 알 수 있다.. 유니티에서 기능이 있는지 모르겠지만 애니메이션 중간에 파티클 이펙트, 사운드까지 추가 할 수 있다.. 얼마나 좋은가! 일단 플레이어 헤더파일에서 UAnimMonatge 를 선언하여 블루프린트에 애니메이션 몽타주를 삽입할 수 있도록 한다. 애니메이션 몽타주를 만들어서 기깔나게 애니메이션을 만들어보자 중간에 소리도 넣고 해보자! 만들어진 몽타주를 블루프린트에 넣어주고 프로젝트 세팅에서 입력칸에 마우스 좌클릭시 공격이라는 입력을 추가한후 코드로 바인딩을 해주고 코드상으로 마우스 좌클릭시에 Montage..

언리얼 엔진 5 2024.02.02

언리얼엔진5 C++로 정복하기(4) 캐릭터 클래스 및 애니메이션

캐릭터 클래스 생성 및 이동 애니메이션을 간략하게 정리해보자 우선 캐릭터 클래스로 c++ 파일을 생성해준다. 생성한 c++클래스를 블루프린트로 파생시켜준다! cpp 에서 생성자에 컴포넌트를 붙여준다. ( 폰에서 했던것봐 비슷하다) 그럼 다음 블루프린트에서 메쉬선택과 설정 조절을 잘해주자 다음으로 키바인딩을 해준다. 코드로 이동하는 부분 코드를 짜줍시다! 마지막으로 우리가 키가 반응하게 코드도 짜줍니다. 키 설정을 한 후에 애니메이션을 만들어줘야하는데 블레드 스페이스 애니메이션을 짜줍니다. 그런 다음 블레드 스페이스 애니메이션 전환에 필요한 angle 값과 speed 값을 블루 프린트 or c++ 에서 값을 구해줍니다. 캐릭터의 벨로서티 값을 불러오면 됩니다. 구한 값을 블렌드 스페이스 매개변수로 넣어주면..

언리얼 엔진 5 2024.01.30

언리얼엔진5 C++로 정복하기(3) 폰 생성 및 이동

이번 글에서는 간략하게 폰 생성과 이동에 대해 글을 써보겠습니다. 폰클래스로 c++ 파일을 생성해줍시다. 그 다음 c++파일을 블루프인트 파생클래스로 만들어 줍시다. 블루프린트에 스켈레톤 컴포넌트, 캡슐 컴포넌트, 스프링암, 카메라를 생성하기위해 c++로 해당 코드를 짜줍시다. 컴파일을 하고나면 블루프린트에 생성된것을 볼 수 있고 폰의 이동을 위해 FloatingPawnMovement를 추가 게임 시작시 만든 폰으로 게임을 시작하기 위해 게임모드 생성후 디폴트 폰 클래스 변경 키 바인딩을 위해 프로젝트 세팅 -> 입력에 해당 바인딩을 해줍시다. 다시 c++로 와서 해당 코드를 짜주면 마우스 x 축은 좌.우 화면 전환 마우스 y는 상 하 방향전환 w, s 키는 앞뒤로 이동하며 forwardvector를 사..

언리얼 엔진 5 2024.01.23

언리얼엔진5 C++로 정복하기(2) 엑터 로케이션

이번에는 엑터 로케이션에 대한 정리입니다. 사용해볼 함수는 SetActorLocation(), SetActorRotation(), AddActorWorldOffset(), AddActorWorldRotation() 총 4가지 입니다.. 시작하기 전에 우리의 블루프린트 클래스에 스태틱메쉬 컴포넌트를 붙여줍시다. 생성자에서 CreateDefaultSubObject를 사용하시면 됩니다. 스태틱메쉬에 원하는 메쉬를 넣어주시고 하늘쪽으로 위치 이동시켜줍니다. 액터 로케이션은 FVector로 엑터 로테이션은 FRotator 로 설정해줍시다. 그러면 액터는 이러한 형태를 갖게 됩니다. 여기서 엑터를 실시간으로 움직여줍시다. (SetActorLocation 과 SetActorRotation을 BeginPlay에 선언하..

언리얼 엔진 5 2024.01.18

언리얼엔진5 C++로 정복하기(1) 디버그

프로그래밍에서 가장 중요한 디버깅 언리얼 C++로 알아봅시다. 유니티에서 Debug.log로 콘솔창에 로그를 뛰운것처럼 언리얼엔진에서도 콘솔창에 로그를 뛰울 수 있다. 액터로 cpp파일을 생성하여 비주얼 스튜디오를 켜보자 언리얼에서는 UE_LOG로 로그를 찍어볼 수 있다. 두번째 매개변수는 콘솔창에 뛰우는 종류를 설정할 수 있는데, Display, Warning 등 여러가지가 존재한다. 개인적으로 Warning이 색 때문에 잘 보여서 자주 애용하는거 같다. 작성한 코드를 컴파일후에 블루프린트 클래스로 만들어준다. (유니티의 프리팹 느낌) 만들어진 블루프린트 클래스를 월드에 배치한후에 실행해보면 이런식으로 콘솔창에 로그가 뛰어집니다. 그다음 로그가 아닌 월드에 디버그 그림을 그려봅시다. 언리얼에서는 Dra..

언리얼 엔진 5 2024.01.16

언리얼 엔진5 블루프린트 이해하기

루카스님의 언리얼 엔진 블루프린트 강의를 보면서 공부를 하는중이다. https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC5-%EA%B0%9C%EB%B0%9C%EC%9D%98%EC%A0%95%EC%84%9D-1 [입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트 - 인프런 | 강의 아무것도 모르는 입문자를 위한 강의 입니다. 언리얼 엔진의 비주얼 스크립팅 시스템인 블루프린트를 프로그래머 관점에서 공부하며 익숙해지는 강의입니다., 코딩 생초보도, 프로 게임 개발자 www.inflearn.com 위의 강의인데, 2년간 유니티를 사용하다가 처음에 언리얼엔진으로 오면서 막막했는데, 해당 강의를 듣고 어느정도 현재 자리를 잡은 것 같다. 처음 언리얼 엔..

언리얼 엔진 5 2023.07.13