언리얼게임프로젝트 (42) 블로그 내 검색 검색 글쓰기 관리자 썸네일형 리스트형 Character 이동기능 옮기기 ActorComponent 이번에는 ATPSPlayer Class 의 이동에 관련된 멤버들을 모두 PlayerMove클래스로 이동시켜 주겠습니다.우선 ia_Move, direction, Move()함수를 짤라내 PlayerMoveComponent.h의 public: 영역에 붙여줍니다.PlayerMoveComponent.h public: UPROPERTY(EditDefaultsOnly, Category = "Input") class UInputAction* ia_PlayerMove; FVector direction; void Move(const struct FInputActionValue& inputValue);Move()의 구현부를 짤라 이동시켜줍니다.void UPlayerMoveComponent::Move(c.. 플레이어 이동 컴포넌트 제작 이전에 만든 PlayerBaseComponent를 부모로 PlayerMoveComponent C++ 클래스를 생성합니다.이렇게 만들어진 PlayerMoveComponent 컴포넌트를 플레이어 액터에 붙여주겠습니다.TPSPlayer.h public:에 playerMove 포인트변수 추가 UPROPERTY(VisibleAnywhere, Category = "Component") class UPlayerBaseComponent* playerMove; UPlayerMove클래스를 생성해 이 playerMove변수에 할당해 주겠습니다.TPSPlyaer.cpp에 PlayerMoveComponet.h를 인클루드해주고#include "PlayerMoveComponent.h"생성자 맨 아래 CreateDefaultSub.. ActorComponent Movement, InputComponent 인생언리얼5 뒷부분에 나오는 부분이다. 기본적으로 앞부분의 프로젝트가 있어야 한다. 인생언리얼5 git에서 다운받을수 있다.이건 참조부분 언리얼 엔진(Unreal Engine) 튜토리얼 - Actor Component로 공전하는 Sphere 만들기개요Actor와 Actor Component를 가지고 캐릭터 주위를 공전하는 Sphere를 만들어 보자. 튜토리얼에서 배울 수 있는 것들Actor Component를 Actor에 추가하는 방법.물체가 원 운동을 하게 하는 방법.Actor Componenteastroot1590.tistory.com 많이 쓰는 기능을 컴포넌트에 모아 놓고 재활용할수 있게 하는 방법이다.C++클래스를 부모를 액터컴포넌트로 선택하고 이름을 PlayerBaseComponent로 한다.컴.. Actor Class 검색 방법, EnemyManager, EnemyFactory Enemy를 생성하는 EnemyManager 클래스를 만들고 BP_EnemySpawnPoint를 위치한곳에서 랜덤으로 적을 만들려고 한다. 이 위치를 Array에 담아 놓을건데 UPROPERTY(EditAnywhere, Category = "Spawnsettings") TArray spawnPoints;블루프린트에서 +를 눌러 포인트수만큼 어레이를 추가해 하나씩 지정해도 되지만 자동으로 해보자. 우선 생성한 포인트를 만들 BP_EnemySpawnPoint 블루프린트를 액터를 부모로 만든다.Sphere를 하나 넣고 콜리젼 프리셋은 NoCollision Render는 Hidden In Game으로 게임 플레이시 안보이게 해준다.EnemayManager.h에헤더에 변수 선언 UPROPERTY(EditAnywh.. 프로젝트 준비하기 UClass, UObject, CDO TPSProject라는 이름으로 Game>Blank Templete C++ StarterPack포함해서 프로젝트를 만듭니다.Thirdperson은 에디터가 로딩후 블루프린트만 Add합니다.(이렇게하면 Thirdperson의 코드가 포함되지 않는다고 합니다.)ThirdPerson Pack이 임포트되면 Characters폴더가 생기고 하위 UE4 Meshes아래 SK_Mannequin이 있습니다. 레퍼런스를 카피해 C++상에서 메시를 임포트하는 레퍼런스로 씁니다. '언리얼 C++ 게임 개발의 정석/1. 개발 환경 셋팅' 카테고리의 글 목록 study-room.tistory.comUnreal 헤더툴은 헤더파일을 분석해 클래스의 메타정보를 UClass에 저장합니다. 클래스의 속성이나 멤버함수를 호출하는데 활용합.. UI제작하기 언리얼슈팅게임 C++ 점수와 게임종료에 대한 UI를 제작해보겠습니다.이러한 게임 전반에 관한 관리를 게임모드에서 하는게 좋습니다.Widget는 점수를 표시하는 MainWidget와 게임 종료시 선택할수 있게 하는 MenuWidget 2개를 작성합니다. 부모는 UserWidget으로 합니다.VisualStudio로 위젯을 사용하기 위해 ShootingCPP.Build.cs에 UMG모듈을 추가해줍니다. 그래야 UMG의 기능에 접근할수 있습니다.MainWidget.h를 열고 scoreData 변수를 만들어 줍니다. #pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "MainWidget.generated.h"/** * */UCLASS()cla.. 킬존 Kill Zone 제작하기 C++ 화면 밖으로 나간 총알과 에너미를 제거하기 위해 킬존액터를 만들어 보겠습니다. 플레이어가 바닥으로 내려가지 못하게도 해보겠습니다.먼저 프로젝트 세팅에서 Collision Category에서 프리셋을 KillZone으로 만듭니다. 채널은 만들지 않고 ObjectType을 WorldStatic으로 합니다. Enemy와 Bullet은 Overlap 으로 충돌을 감지하고 Player는 Block으로 충돌시 못움직이게 합니다.Enemy와 Bullet 프리셋도 열어 WorldStatic와 overlap되게 체크해 줍니다.KillZone C++ Class를 언리얼에디터에서 만들고 visual studio로 가서HEAD에 충돌을 감지할 박스컴포넌트 변수를 만들고 UPROPERTY(EditAnywhere) class.. 충돌이벤트와 델리게이트 Delegate 키보드가 눌리면 InputAction과 Binding된 함수가 실행되게 했죠. 이런걸 Deligate라고 합니다.이때는 binding될 함수만 만들어 사용하면 되었지만 나중에 처음부터 만들경우 Deligate 매크로를 사용해 Deligate화 하고 바인딩후 실행해야 합니다. (키보드 처리 로직이 선언, Deleifate화, 실행을 해서 안보일뿐이지만) 델리게이트 장점 예를 들어 설명하자면, 애님인스턴스 클래스에서 캐릭터의 콤보 카운트를 전달받아 해당 몽타주 섹션을 재생하고, NextAttackCheck 노티파이가 발생할 때마다 캐릭터에 이를 전달할 델리게이트를 선언하였다고 가정하자. 노티파이 함수에서 이 델리게이트를 호출해주면 애님 인스턴스는 자신의 델리게이트를 사용하는 객체(캐릭터)가 어떤 것인지 .. Ureal C++ Collision처리 블루프린트 슈팅개발시 했던것처럼 프로젝트세팅 콜리젼에 Player, Enemy, Bullet New Object 채널을 생성합니다. 기본 응답은 Ignore로 합니다.2025.03.10 - [게임프로젝트/슈팅게임 블루프린트] - 충돌처리 Collision 충돌처리 Collision액터들의 충돌처리를 해줍니다.BP_Bullet을 열고 Box Collision을 추가하고 root로 해줍니다. Shape Extent를 조정해 박스를 싸줍니다. BP_Enemy를 열고 역시 BoxCollisoin을 추가하고 루트로 만들고 사이즈롤 설unreal6.tistory.com오브젝트 채널을 블루프린트에서 지정하지 않고 코드에서 구현해보겠습니다.프로젝트 Config폴더안 DefaultEngine.ini을 ECC_로 검색해보.. EnemyActor Factory 생성하기 Spawn EnemyActor Class를 만들어 속성을 정의했지만 누군가 만들어 줘야 합니다.EnemyFactory라는 Class를 만들어 관리하게 하겠습니다.Unreal Editor에서 EnemyFactory Class를 Actor를 부모로 만듭니다.EnemyActor를 생성할 타이머를 만들기 위해 변수2개를 헤더에 만듭니다. UPROPERTY(EditAnywhere) float delayTime = 2.0f;private: float currentTime = 0.0f;EnemyFactory.cpp Tick()에서 타이머를 구현해줍니다.void AEnemyFactory::Tick(float DeltaTime){ Super::Tick(DeltaTime); if (currentTime > delayTime) { .. Unreal Shooting Game C++ EnemyActor Actor 를 부모로 C++ 클래스를 Public으로 만들자header public:부분에 콜라이더와 스태틱매시 컴포넌트 변수 선언public: UPROPERTY(EditAnywhere) class UBoxComponent* boxComp; UPROPERTY(EditAnywhere) class UStaticMeshComponent* meshComp;EnemyActor.cpp에서 헤드파일을 추가하고 생성자에서 박스컴포넌트와, 스태틱메시컴포넌트 오브젝트를 만들어 연결해줍니다.#include "Components/BoxComponent.h"AEnemyActor::AEnemyActor(){ // Set this actor to call Tick() every frame. You can turn this of.. Unreal Shooting Game bullet 총알제작 USoundBase 총알은 입력을 받을 필요가 없으므로 Pawn이 아닌 Actor를 부모로 제작합니다. 이름은 Bullet으로 정합니다.헤더에서 public:밑에 변수를 추가컴포넌트를 생성 연결해줍니다.ABullet::ABullet(){ // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; boxComp = CreateDefaultSubobject(TEXT("BoxCollider")); SetRootComponent(boxComp); meshComp = CreateDefaultSubobject(TEXT("S.. 이전 1 2 3 4 다음 목록 더보기