unfurl

Tween

A lightweight tweening library

Convenient curve functions to ease a value between a start and end, like positions, scales, colors, anything you want to smoothly change.


πŸ‘€ Summary

NsTween is a small yet powerful tweening framework for Unreal Engine. It allows smooth interpolation of floats, vectors and quaternions using a rich set of easing functions. Tweens can be controlled entirely through C++ or Blueprint nodes.

NsTween

πŸ“¦ Features

βš™οΈ Requirements

Unreal Engine 5.2+

πŸ› οΈ Installation

  1. Clone or download this repository.
  2. Copy the NsTween folder into your project’s Plugins directory.
  3. Generate project files and enable the plugin when prompted.

πŸš€ Getting Started

Below is a minimal C++ example showing how to move an actor along the X axis using NsTweenCore:

#include "NsTweenCore.h"

void AMyActor::BeginPlay()
{
    Super::BeginPlay();

    NsTweenCore::Play(
        /**Start*/   0.f,
        /**End*/     100.f,
        /**Time*/    2.f,
        /**Ease*/    ENsTweenEase::InOutQuad,
        /**Update*/  [this](float Value)
        {
            SetActorLocation(FVector(Value, 0.f, 0.f));
        });
}

The library also exposes Blueprint nodes for the same functionality if you prefer a visual approach. Below is a slightly more advanced snippet showing how to make an item float up and down while spinning for 10 complete loops

#include "NsTweenCore.h"

void AFloatingItem::BeginPlay()
{
    Super::BeginPlay();

    // Float continuously
    NsTweenCore::Play(
         /**Start*/   GetActorLocation().Z,
         /**End*/     GetActorLocation().Z + 40.f,
         /**Time*/    1.f,
         /**Ease*/    ENsTweenEase::InOutSine,
         /**Update*/  [this](float Z)
        {
            FVector CurrentLocation = GetActorLocation();
            CurrentLocation.Z = Z;
            SetActorLocation(CurrentLocation);
        })
        .SetPingPong(true)
        .SetLoops(-1); // infinite loops


    // Rotate and print 10 times the Loop
    NsTweenCore::Play(
        /** Start  */  0.f,
        /** End    */  360.f,
        /** Time   */  2.f,
        /** Ease   */  ENsTweenEase::Linear,
        /** Update */  [this](float Yaw)
        {
            SetActorRotation(FRotator(0.f, Yaw, 0.f));
        })
        .SetLoops(10) // 10 full spins
        .OnLoop([this]()
        {
            UE_LOG(LogTemp, Warning, TEXT("Spin finished"));
        });
}

πŸ”§ API

Key Classes

Main Functions


⬇ Download on GitHub


Contact