Ball movetype

Hello All,
Im attempting to make a controllable ball by the player like GMTs ball race and i have most of it done movement wise. But if the map has a trigger_push and im holding a movement key then it ignores the push, but if im not holding a key it doesnt and pushes me.
Is there any way of fixing this? Change in direction is also really jerky.

On the players spawn the ball is created and the player is set to spectate it

Movement code: (Was massive so i uploaded it to pastebin)
http://pastebin.com/UUU7Kpk8

Any questions at all please ask

I don’t think you can solve it using Physics update since you are directly overriding the velocity whenever a key is pressed. I would use PhysicsSimulate instead, but without actually testing it I can’t say for sure if it would work with the trigger_push sorry.

Instead of changing the velocity, maybe apply a certain force onto the physics object? That way it’s additive

Initially I was using apply force but then turning was very difficult so I moved to velocity

with Physics Simulate i have got back to a very hard ball to turn
[lua]
function ENT:PhysicsSimulate(phys, time)
local ply = self:GetOwner()
local ent = self
local power = 30050//80001

local dir = 0

local aimYaw = Angle(0,ply:EyeAngles().y,0)
local moveDir = Vector(0,0,0)

if (ply:KeyDown(IN_FORWARD)) then
	moveDir = moveDir + aimYaw:Forward()
end
if (ply:KeyDown(IN_BACK)) then
	moveDir = moveDir - aimYaw:Forward()
end
if (ply:KeyDown(IN_MOVERIGHT)) then
	moveDir = moveDir + aimYaw:Right()
end
if (ply:KeyDown(IN_MOVELEFT)) then
	moveDir = moveDir - aimYaw:Right()
end

moveDir:Normalize()

local newVel = moveDir - Vector(0,0,0)

return (newVel * power), (newVel * power), SIM_GLOBAL_FORCE

end
[/lua]