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 the fluent tween helpers built into FNsTween:

#include "NsTween.h"

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

    FNsTween::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 "NsTween.h"

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

    // Float continuously
    FNsTween::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
    FNsTween::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"));
        });
}

🚩 Road Map

NsTween

πŸ”§ API

Runtime Core

Data & Specs

Blueprint & Async Surface

Strategies & Helpers

Easing Implementations

🧭 Framework Layout

Use the following map when you need to dive deeper than the high-level feature overview. Each entry mirrors the folder layout inside the plugin so you can jump straight from prose into the exact file that owns the logic.

Public Surface

Runtime Flow


⬇ Download on GitHub


Contact