Прежде всего, вы, вероятно, должны установить Viewport в вашей функции Draw. Во-вторых, вы должны убедиться, что границы вашего Viewport всегда остаются на экране!
В любом случае, причина, по которой он движется подобным образом, заключается в том, что система координат SpriteBatch в пространстве клиента в терминах области просмотра .
Другими словами, позиция (0,0), согласно SpriteBatch
, является верхним левым углом GraphicsDevice.Viewport
.
Вот почему ваш спрайт движется с удвоенной скоростью, которую вы ожидаете, потому что вы фактически делаете две разные операции, изменяя его позицию рендеринга.