Book Image

Unreal Engine 4 Scripting with C++ Cookbook

By : William Sherif, Stephen Whittle
Book Image

Unreal Engine 4 Scripting with C++ Cookbook

By: William Sherif, Stephen Whittle

Overview of this book

Unreal Engine 4 (UE4) is a complete suite of game development tools made by game developers, for game developers. With more than 100 practical recipes, this book is a guide showcasing techniques to use the power of C++ scripting while developing games with UE4. It will start with adding and editing C++ classes from within the Unreal Editor. It will delve into one of Unreal's primary strengths, the ability for designers to customize programmer-developed actors and components. It will help you understand the benefits of when and how to use C++ as the scripting tool. With a blend of task-oriented recipes, this book will provide actionable information about scripting games with UE4, and manipulating the game and the development environment using C++. Towards the end of the book, you will be empowered to become a top-notch developer with Unreal Engine 4 using C++ as the scripting language.
Table of Contents (19 chapters)
Unreal Engine 4 Scripting with C++ Cookbook
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Preface
Index

Creating a respawning pickup for an First Person Shooter


This recipe shows you how to create a placeable pickup that will respawn after a certain amount of time, suitable as an ammo or other pickup for an FPS.

How to do it...

  1. Create a new Actor class called Pickup.

  2. Declare the following delegate type in Pickup.h:

    DECLARE_DELEGATE(FPickedupEventSignature)
  3. Add the following properties to the class header:

    virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;
    UPROPERTY()
    UStaticMeshComponent* MyMesh;
    
    UPROPERTY()
    URotatingMovementComponent* RotatingComponent;
    
    FPickedupEventSignatureOnPickedUp;
  4. Add the following code to the constructor:

    MyMesh = CreateDefaultSubobject<UStaticMeshComponent>("MyMesh");
    RotatingComponent = CreateDefaultSubobject<URotatingMovementComponent>("RotatingComponent");
    RootComponent = MyMesh;
    auto MeshAsset = ConstructorHelpers::FObjectFinder<UStaticMesh>(TEXT("StaticMesh'/Engine/BasicShapes/Cube.Cube'"));
    if (MeshAsset.Object != nullptr)
    {
      MyMesh...