728x90
MyStaticMeshActor로 c++파일 생성
객체에 티킹(Ticking)할 수 있게 만들기
생성자에서 틱을 설정하므로 'AMoveingPlatform'입니다
// MovingPlatform.h
#pragma once
#include "CoreMinimal.h"
#include "Engine/StaticMeshActor.h"
#include "MovingPlatform.generated.h"
UCLASS()
class UDEMY_CPPMULTIPLAY1_API AMovingPlatform : public AStaticMeshActor
{
GENERATED_BODY()
public:
AMovingPlatform();
};
생성자는 중괄호로 본문을 묶지만 매개변수와 본문 내용은 없습니다.
primaryActorTick.bCanEverTick은 가본적으로 true 입니다.
// MovingPlatform.cpp
#include "MovingPlatform.h"
AMovingPlatform::AMovingPlatform()
{
PrimaryActorTick.bCanEverTick = true;
}
티킹하는 함수를 오버라이딩 합니다.
매치되는 부모 클래스가 보호되어야 하기떼문에 Tick의 반환 유형은 'virtual void'가 됩니다.
// MovingPlatform.h
UCLASS()
class UDEMY_CPPMULTIPLAY1_API AMovingPlatform : public AStaticMeshActor
{
GENERATED_BODY()
public:
AMovingPlatform();
virtual void Tick(float DeltaTime) override; // 추가한 부분
};
// MovingPlatform.cpp
#include "MovingPlatform.h"
AMovingPlatform::AMovingPlatform()
{
PrimaryActorTick.bCanEverTick = true;
SetMobility(EComponentMobility::Movable); //컴포넌트픞 움직일 수 있게 만듦(=액터 디테일에서 모빌리티를 무버블로 변경)
}
void AMovingPlatform::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FVector Location = GetActorLocation(); // Actor의 위치를 FVector유형 변수에 저장
Location += FVector(50*DeltaTime, 0, 0); // Actor의 위치를 초당 X축방향으로 5(cm)만큼 이동
// cm/s
SetActorLocation(Location); // 위치 업데이트
}
Super::함수이름();
부모 클래스에 정의되어있는 로직도 실행시키고 내 로직도 실행시키기 위해서 부모 클래스의 같은 이름의 함수를 호출
void AMovingPlatform::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
SetMobility : 스태틱 메시 액터 이동형 변경 기능
코드말고 앤진에서도 속도 설정 가능하게 만들기
//.h
public:
AMovingPlatform();
virtual void Tick(float DeltaTime) override;
// 코드말고 앤진에서도 속도 설정 가능
UPROPERTY(EditAnywhere)
float Speed = 100;
};
/********************/
// .cpp
Location += FVector(Speed * DeltaTime, 0, 0);로 수정
지정위치로 이동시키기
'UNREAL > Unreal Study' 카테고리의 다른 글
cmd창에서 UE 실행 (0) | 2024.05.07 |
---|---|
멀티플레이어 - 미완 (0) | 2024.05.07 |
외부 프로그램 화면 가장 앞or 뒤로 옮기기 (0) | 2024.03.17 |
언리얼로 만든 프로그렘 전체화면으로 만들기 (0) | 2024.03.17 |
탐색창에서 파일 선택해 불러오기, 저장위치 정하기 (0) | 2024.03.17 |