You initialize this.Target
to 0,0,0. This value never changes.
then later in your UpdateView
method, you calculate finalTarget
by transforming this.Target
by a matrix representing a rotation only.
The result of
Vector3.Transform(this.Target, rotationMatrix)
is essentially the same as
Vector3.Transform(Vector3.Zero, rotationMatrix)
.
Essentialy, that always results in (0,0,0) which should place finalTarget
at the same position as this.Position
except for floating point error that will give very small values to each component which factor in to cause your issue.
Try starting off by giving this.Target
the value of 0,0,-1 (which causes the initial look direction to be the same as what your current code is trying to do, but gives the Vector3.Transform()
something to work with) and you should be ok.