Чтобы летел вперед нужно найти адрес координат камеры и адрес кватерниона.
Этот кватернион умножаем на нормализованный свой эйлеров угол смотрящий по глобальной оси координат "вперед" (например это 0X-ось), который умножаем на скорость движения и дельту времени между кадрами отрисовки. Скорость движения для W положительная, а для S отрицательная.
У игрового объекта есть позиция X,Y,Z и углы кватерниона X,Y,Z,W. К позиции прибавляем нормализованный вектор оси вперед. Возьми например 0,1,0.
Этот код на C# на CE Lua переписать с таймером и горячими клавишами. Посмотреть как работает.