Hello , I can’t figure out how to smooth the transition between 2 angles in a Swep. SnapEyeAngles just makes player view instantly go up but I want to smooth that transition , could anybody help me with that ? Thanks.
Use a loop to change the angles based on a timer. So change the angles by 1 every .1-1 second.
LerpAngle. Call that each CreateMove call.
uhm , can you post an example of using LerpAngle? thanks
[lua]local angle2 = Angle(90,90,90)
local curang = Angle(0,0,0)
hook.Add(“CreateMove” , “Wat” , function(ucmd) curang = LerpAngle(0.1 , curang , angle2) ucmd:SetViewAngle(curang) end )[/lua]
Something like that.
[editline]29th January 2011[/editline]
You could also use math.Approach
FlapJack’s version will decellerate over time, use this.
[lua]
local curAng = LerpAngle(math.min((starttime-CurTime())/duration,1),ang1,ang2)
[/lua]
Where do it put this line of code? Should I hook it?
Same principle as my code, just ralle’s will remain at a constant speed.
Sorry for being stupid , but :
[lua]local function SmoothAngles(ucmd)
local owner = LocalPlayer()
local weapon = owner:GetActiveWeapon()
if weapon.SmoothAngles then
local curAng = LerpAngle(math.min((weapon:GetNWFloat(“starttime”)-CurTime())/0.1,1),owner:EyeAngles(),owner:EyeAngles()-Angle(1,0,0))
ucmd:SetViewAngles(curang)
end
end
hook.Add( “CreateMove” , “SmoothAngles” , SmoothAngles )[/lua]
When i take one of my weapons, my view spins up when i even don’t shoot, assuming that “starttime” float is : [lua]self.Weapon:SetNetworkedFloat( “starttime”, CurTime() )[/lua], it is set everytime that PrimaryAttack() function is called.
Starttime should be set when you start changing the angle.