| Home Page | Recent Changes

Tamearia Teleport Effect

This is the teleporter class for Tamearia. Instead of just suddenly teleporting the player, it has a cartoonish collapsing/expanding circle effect.

First, the teleporter itself:

class FadeOutTeleporter extends TameariaObject
    placeable;

var() edfindable FadeOutTeleporter Destination;
var Pawn Shawna;

simulated function PostBeginPlay()
{
    super.PostBeginPlay(); // TAMGame is set in the superclass TameariaObject.
}

event Touch(Actor Other)
{
    if(Other == none || Destination == none)
        return;

    if(Pawn(Other) != none && !Other.IsA('Vehicle'))
    {
        TAMGame.TeleportingPlayer(self); // Tells the game to start the fade out.
        Shawna = Pawn(Other);
    }
}

function TeleportHer() // Called through the Gametype from the HUD once the screen is faded out completely.
{
    local rotator NewRot;

    Shawna.SetLocation(Destination.Location);
    NewRot = Destination.Rotation;
    NewRot.Roll = 0;
    Shawna.SetRotation(NewRot);
}

defaultproperties
{
    bCollideActors=True
    bDirectional=True
}

Next, the code in the GameType:

class TameariaGame extends GameInfo
    HideDropDown
    CacheExempt
    config(Tamearia);

var Pawn Shawna;
var FadeOutTeleporter FadeOutTeleporter;

function TeleportingPlayer(FadeOutTeleporter FOT) // When the player hits a teleporter, stop them.
{
    FadeOutTeleporter = FOT;
    bDrawTeleport = true; // Tell the HUD to start the fade.
    Shawna.GroundSpeed = 0;
}

function DoTheTeleport() // Once the HUD is faded, tell the teleporter to teleport the player.
{
    FadeOutTeleporter.TeleportHer();
}

function FinishedTeleportingPlayer() // Once the fade in is complete, allow the player to move.
{
    Shawna.GroundSpeed = Shawna.default.GroundSpeed;
}

Then, the final part of the script in the HUD:

class TameariaHUD extends HudBase
    config(TameariaUser);

var TameariaGame TAMGame;

var float TeleportPos;
var bool bDrawTeleport, bReverseTeleportDraw;

function PostBeginPlay()
{
    TAMGame = TameariaGame(Level.Game);
    Super.PostBeginPlay();
}

function DrawHUD(Canvas C)
{
    C.SetDrawColor(255,255,255,255);

    if(TAMGame.bDrawTeleport) // If the gametype is set to teleport, acknowledge it and do the fade.
    {
        bDrawTeleport = true;
        TAMGame.bDrawTeleport= false;
    }

    if(bDrawTeleport)
    {
        C.SetPos(C.SizeX*TeleportPos,C.SizeY*TeleportPos);

        // Draw the texture with the alpha'd hole cut out of it.
        C.DrawTileScaled(Material'TameariaTextures.TeleportHUDEffect',
                         (-(TeleportPos-0.5))*(C.ClipX*2/512),(-(TeleportPos-0.5))*(C.ClipY*2/512));

        // Draw borders around the alpha'd hole texture.
        if(TeleportPos >= -0.1)
        {
            C.SetPos(0,0);
            C.DrawTile(material'UCGeneric.Black',TeleportPos*C.SizeX,C.SizeY,0,0,0,0);
            C.SetPos(0,0);
            C.DrawTile(material'UCGeneric.Black',C.SizeX,TeleportPos*C.SizeY,0,0,0,0);
            C.SetPos((TeleportPos*C.SizeX)+(-(TeleportPos-0.5))*(C.SizeX*2),0);
            C.DrawTile(material'UCGeneric.Black',C.SizeX*TeleportPos,C.SizeY,0,0,0,0);
            C.SetPos(0,C.SizeY-(C.SizeY*TeleportPos));
            C.DrawTile(material'UCGeneric.Black',C.SizeX,C.SizeY*TeleportPos,0,0,0,0);
        }
    }
}

function tick(float DeltaTime)
{
    if(bDrawTeleport)
    {
        if(!bReverseTeleportDraw)
            TeleportPos += DeltaTime; // Circle collapsing.
        else
            TeleportPos -= DeltaTime; // Circle expanding.
        if(TeleportPos > 0.5) // If the circle is collapsed, tell the gametype to teleport the player, and expand the circle.
        {
            bReverseTeleportDraw = true;
            TAMGame.DoTheTeleport();
        }
        if(bReverseTeleportDraw && TeleportPos < 0.25) // Let the player move a bit before the circle is done expanding.
            TAMGame.FinishedTeleportingPlayer();
        if(TeleportPos < -0.5) // Reset everything once the teleport is finished.
        {
            TeleportPos = -0.5;
            bReverseTeleportDraw = False;
            bDrawTeleport = false;
        }
    }
}


defaultproperties
{
    TeleportPos=-0.5
}

[AngelMapperTeleportEffect]

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In