4 - 코드 테스트

레벨에 테스트 오브젝트를 만듭니다.

Windows
MacOS
Linux
이 페이지의 내용:
  1. 언리얼 에디터 에서 콘텐츠 브라우저 를 찾은 다음 "C++ Classes" 라는 폴더를 펼칩니다. 그 폴더 안에 보면 "QuickStart" 폴더가 있으며, 그 안에 FloatingActor 라는 액터 클래스가 있습니다.

    ClassInContentBrowser.png

  2. FloatingActor 클래스를 레벨 에디터 창에 바로 끌어 놓으면 월드에 FloatingActor 인스턴스가 생성됩니다. 레벨 에디터월드 아웃라이너 에 선택되어 있는데, "FloatingActor1" 라고 되어 있습니다. 디테일 패널 에는 그 컴포넌트 와 기타 프로퍼티가 보입니다.

    WorldOutliner.png

  3. FloatingActor 를 게임에서 보이게 해 줘야겠습니다. 선택된 상태에서 디테일 패널컴포넌트 추가 를 클릭한 다음, Cone 을 선택하여 단순한 시각적 표상을 설정해 줍니다.

    AddStaticMesh.png

  4. 커스터마이징된 액터 가 준비되었으니, 눈에 띄는 곳으로 이동시켜 봅시다. 마우스 왼쪽 버튼으로 선택한 다음 끌어 월드에서 이동시키거나, 수동으로 이동시킬 수도 있습니다. 수동으로 이동시키려면, 레벨 에디터월드 아웃라이너 에서 선택한 다음 디테일 패널 을 사용하여 "FloatingActor1 (Instance)" 를 선택합니다. 그러면 이제 FloatingActor1 의 트랜스폼위치 칸을 직접 수정할 수 있습니다. X 를 -200, Z 를 200 으로 설정합시다. 그러면 "FloatingActor1" 가 씬의 탁자 바로 위에 놓이게 됩니다.

    SetActorLocation.png

  5. 플레이 버튼을 누르면 원뿔이 위아래로 떠다니는 것이 보입니다!

    MovingCone.png

Finished Code

FloatingActor.h

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#pragma once

#include "GameFramework/Actor.h"
#include "FloatingActor.generated.h"

UCLASS()
class QUICKSTART_API AFloatingActor : public AActor
{
    GENERATED_BODY()

public: 
    // Sets default values for this actor's properties
    AFloatingActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
    // Called every frame
    virtual void Tick( float DeltaSeconds ) override;

    float RunningTime;
};

FloatingActor.cpp

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#include "QuickStart.h"
#include "FloatingActor.h"

// Sets default values
AFloatingActor::AFloatingActor()
{
    // 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;

}

// Called when the game starts or when spawned
void AFloatingActor::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void AFloatingActor::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);
}