프로그래밍/언리얼엔진 92

언리얼엔진 4 C++강좌 007 [actor-07] 액터에서 이벤트 발생시키기

내가 만든 actor인 LampActor에 이벤트를 추가합니다. 그리고 레벨 블루프린트와 연결되는 ScriptActor를 만들어서 LampActor에서 발생하는 이벤트를 LevelScript Actor에서 받아 처리하는 방법을 설명합니다. // LampActor.h DECLARE_EVENT(ALampActor, FLightSetEvent) // LampActor.h public: FLightSetEvent& OnLigthSet() { return lightSetEvent; } private: FLightSetEvent lightSetEvent; 램프 액터의 헤더 파일에 위와 같이 이벤트를 선언합니다. // LampActor.cpp lightSetEvent.Broadcast(); 위 코드로 이벤트를 발생시..

언리얼엔진 4 C++강좌 004 [actor-04] 가까이 다가가면 자동으로 불이 켜지는 램프 액터 만들기

가까이 다가가면 자동으로 불이 켜지는 램프 액터를 만들어 봅니다. C++로 램프 액터를 만든 다음 box component를 추가하고 그 box에 뭔가 overlap 되는 이벤트가 발생하면, 그 이벤트를 처리해 램프에 불을 켜는 처리를 해 봅니다. 또한 overlapEnd 이벤트도 처리해 멀어지면 자동으로 불이 꺼지게 만들어 봅니다. 먼저 박스 컴퍼넌트를 추가해 봅니다. // LampActor.h UPROPERTY() UBoxComponent* m_pBox; 그리고 박스에서 발생하는 이벤트를 받기 위해, OnOverlapBegin 이벤트와 OnOverlapEnd 이벤트를 아래와 같이 정의합니다. // LampActor.h UFUNCTION() void OnOverlapBegin(UPrimitiveComp..

언리얼엔진 4 C++강좌 005 [actor-05] C++ 클래스의 재사용성 - 다른 프로젝트에서도 사용 가능할까?

cpp01 프로젝트에서 LampActor 클래스를 만들어 동작하는 것까지 확인했는데, 이 클래스 헤더 파일과 cpp 파일을 복사해서 다른 프로젝트에 추가해 놓으면 똑같이 동작하도록 만들 수 있을까요? 답은 물론 당연하다 입니다. 클래스를 만들어 쓰는 이유 중 하나가 재사용성 때문인데, 클래스 파일 복사해 놓으면 당연히 똑같이 동작해야지요. LampActor 클래스의 재사용성을 확인하기 위해 새로운 프로젝트를 만들고 그 프로젝트에서 LampActor 클래스를 재사용하는 방법을 보여줍니다. 사실 한가지만 신경쓰면 되는데, 헤더 파일에 //LampActor.h UCLASS() class CPP01_API ALampActor : public AActor { "class" 예약어 뒤에 CPP01_API 처럼 기존..

언리얼엔진 4 C++강좌 006 [actor-06] 에디터에서 설정하면 실시간으로 액터에 반영되도록 하기

에디터에서 빛의 세기를 바꾸면 실시간으로 그 값이 클래스의 인스턴스에서 반영되도록 수정해 봅니다. 위 그림과 같이 우리가 만든 클래스에 빛의 세기를 조절하는 변수를 둘 수 있고, 에디터에서 보여줄 수도 있는데, 에디터에서 "빛의 세기" 값을 조절해도 에디트 중에는 그 값이 실시간으로 보여지질 않습니다. 그러니까, "빛의 세기" 값을 바꾸면 에디트 타임에도 반영이 되었으면 하는 것이죠. 이게 언리얼엔진과 c++에서 가능합니다. // LampActor.h virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; 위와 같이 헤더 파일에 PostEditChangeProperty 함수를 선언하고, // Lam..

언리얼엔진 4 C++강좌 003 [actor-03] 로그 남기는 방법

언리얼엔진 4에서 c++를 이용해 로그를 남기거나, 화면에 메시지를 보여주는 방법을 배워 봅니다. - UE_LOG 함수로 로그 남기기 - AddOnScreenDebugMessage 함수로 화면에 메시지 보이기 // MyActor.cpp void AMyActor::BeginPlay() { Super::BeginPlay(); UE_LOG(LogBlueprint, Warning, TEXT("in BeginPlay. speed = %f"), speed); GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("in BeginPlay")); } 위와 같이 UE_LOG() 함수를 이용해 로그를 남길 수 있고, GEngine->AddOnScreenDebug..

언리얼엔진 4 C++강좌 002 [actor-02] Actor를 움직여보자

언리얼엔진 4 c++ 강좌입니다. 두번째 시간으로 c++로 만든 actor를 tick() 함수를 이용해 움직여 봅니다. - 엑터가 움직이는 속도를 에디터에서 조절하게 만들기 - 에디터의 카테고리 등에 한글 사용하는 방법 - c++로 만든 함수를 블루프린트에서도 실행하도록 만들기 언리얼엔진 4 c++에서 액터에 움직임을 주려면 Tick() 함수 안에 움직임을 적어주면 됩니다. // MyActor.cpp void AMyActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector newLocation = GetActorLocation(); newLocation.Y += speed; SetActorLocation(newLocation); } 위와 같이 Tick..

언리얼엔진 4 C++강좌 001 [actor-01] Actor 클래스 생성해 보기

언리얼엔진 4 c++ 강좌입니다. 첫 번째 시간으로 c++로 Actor 클래스를 만들고 static mesh component를 추가합니다. 그리고 에디터에서 mesh를 바꿔보기도 하고 material도 설정해 봅니다. 그리고 항상 에디터에서 mesh를 바꿔줄 수는 없기 때문에 Actor 클래스 내에서 static mesh를 결정해 주는 방법도 배워봅니다. 먼저 static mesh를 위해 UStaticMeshComponent 컴포넌트를 추가해 줍니다. // MyActor.h파일 UPROPERTY(EditAnywhere) UStaticMeshComponent* pMeshComp; 생성자에 아래와 같이 컴퍼넌트를 생성하고, UStaticMesh를 생성해서 컴퍼넌트에 그 UStaticMesh를 추가해 준다...

언리얼엔진 4 C++ 강의를 시작합니다.

언리얼엔진4 c++ 강의를 시작합니다. 대상: 언리얼엔진을 blueprint로는 사용하실 수 있어야 합니다. 언리얼엔진을 따로 알려드리지 않습니다. 또 C++에 대해서도 따로 알려드리지 않으니 C++도 하셔야 합니다. 그렇다고 제가 초보자를 위한 강의를 멈춘 건 아닙니다. 지금 계속 초보자를 위한 강의(블루프린트 버전)을 준비 중 입니다.

언리얼엔진 강좌 64 [damage-05] 데미지입다가 에너지가 0되면 죽기

쌩초보를 위한 언리얼 엔진 4 강좌입니다. 소스코드: https://github.com/easyprogstudy/unreal_damage 이번엔 단계별로 올리지 않고 최종 버전만 올려 놓았습니다. 언리얼 엔진 강의 64번째, 총쏘고 데미지 입기 시리즈의 5번째 시간입니다. 적군이 총알에 맞을 때마다 데미지를 입게 되고, 데미지를 입을 때마다 에너지를 조금씩 줄이다가 에너지가 0이 되면 죽는 처리를 해보겠습니다. 총알에 맞아 데미지를 입으면 에너지가 줄어들게 되고, 에너지바의 정보도 업데이트해야 하는데, BP_Enemy 에 에너지바가 붙어 있기는 하지만 BP_Enemy에 Widget이 있고, 그 안에 에너지바 UI가 있는 형태라서 BP_Enemy는 에너지바를 직접 알지 못해요. 그래서 에너지바를 직접 업데..

언리얼엔진 강좌 63 [damage-04]에너지바 만들어 적군에 달아주기

쌩초보를 위한 언리얼 엔진 4 강좌입니다. 언리얼 엔진 강의 63번째, 총쏘고 데미지 입기 시리즈의 4번째 시간입니다. Enemy, 적군이 총알을 맞으면 에너지가 줄어들었다는 것을 시각적으로 보여주기 위해 거의 모든 프로그램이 에너지바를 표시해 줍니다. 이번 시간에는 우리도 그 에너지바를 만들어 적군의 머리 위에 달아주겠습니다. BP_Enemy 적군 캐릭터에 Widget 컴포넌트를 추가하고, 유저 인터페이스 - 위젯 블루프린트를 선택해서 실제 UI를 만들어 준 다음 Widget 컴퍼넌트에 실제 UI를 연결해 줍니다. 이번 시간에는 이렇게 에너지바를 만들어 적군 머리 위에 올려주는 것까지 하고 다음 시간에 실제로 총알에 맞으면 에너지가 줄어들다가 죽는 부분의 블루프린트까지 완성하겠습니다. 언리얼 엔진 버전..