Is it possible to have smooth transition between two vectors? I am trying to implement aiming sights in unreal, where player holds the AltFire button and the PlayerViewOffset of weapon smoothly translates to a new vector.
I tried to do this and it kind of works though not smoothly as expected.
Code: Select all
class ASMDTest extends ASMD;
//summon ironsighttest.asmdtest
var() vector AimSightOffset;
var bool bAltIronSight;
var float DT;
replication
{
reliable if(ROLE == ROLE_Authority)
AimSightOffset;
}
function PlayFiring()
{
Owner.PlaySound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*4.0);
PlayAnim('Fire1', 5.5,0.05);
}
simulated function PostRender(Canvas C)
{
Super.PostRender(C);
C.Font = Font'SmallFont';
C.Style = ERenderStyle.STY_Translucent;
C.DrawColor.R = 255;
C.DrawColor.G = 255;
C.DrawColor.B = 255;
C.SetPos(0, 0.2 * C.ClipY);
C.DrawText("bAltIronSight: "@bAltIronSight);
C.SetPos(0, 0.25 * C.ClipY);
C.DrawText("AimTime: "@AimTime);
C.SetPos(0, 0.3 * C.ClipY);
C.DrawText("PlayerViewOffset.X: "@PlayerViewOffset.X);
C.SetPos(0, 0.32 * C.ClipY);
C.DrawText("PlayerViewOffset.Y: "@PlayerViewOffset.Y);
C.SetPos(0, 0.34 * C.ClipY);
C.DrawText("PlayerViewOffset.Z: "@PlayerViewOffset.Z);
if(!bAltIronSight)
return;
if(ClientIsAiming())
{
/*PlayerViewOffset.X = AimSightOffset.X;
PlayerViewOffset.Y = AimSightOffset.Y;
PlayerViewOffset.Z = AimSightOffset.Z;*/
if(PlayerViewOffset.X = default.PlayerViewOffset.Y)
PlayerViewOffset.Y = default.PlayerViewOffset.Y;
else
PlayerViewOffset.Y += 500 * DT;
//PlayerViewOffset.Y = default.PlayerViewOffset.Y;
PlayerViewOffset.Z = default.PlayerViewOffset.Z;
FireOffset.Y = -default.FireOffset.Y;
}
}
function Tick(float DeltaTime)
{
DT = DeltaTime;
}
simulated function bool ClientIsAiming()
{
return (bAltIronSight &&
Owner.IsA('PlayerPawn') &&
PlayerPawn(Owner).bAltFire!=0 &&
GetStateName()!='Active' &&
GetStateName()!='DownWeapon');
}
function AltFire(float Value)
{
If (!Owner.IsA('PlayerPawn'))
{
Pawn(Owner).bFire = 1;
Pawn(Owner).bAltFire = 0;
Global.Fire(0);
}
if (!bAltIronSight)
PlayerPawn(Owner).bAltFire = 0;
if(!IsInState('Idle'))
GoToState('Idle');
}
defaultproperties
{
bAltIronSight=True
PickupAmmoCount=5000
AimSightOffset=(X=250.500000,Y=0.000000,Z=-100.000000)
PlayerViewOffset=(X=350.500000,Y=150.800000,Z=-200.000000)
}Thanks.


