Я сейчас пытаюсь переместить 2D текстуру в SharpDX. Я могу успешно переместить его, но он скачет немного каждые несколько кадров. Например, если я перетаскиваю снизу, справа вверх, влево, я получаю случайный прыжок, когда источник изображения находится на 75% внизу справа, а затем возвращается туда, где он был несколькими кадрами позже. На мой взгляд, это довольно странно, и я думаю, что это возможно из-за события или положения мыши.
Я обновляю позицию текстуры с помощью события MouseMove в моей форме:
private void MouseMove(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left) {
testSprite.Position = new Vector2(e.X - testSprite.Position.X,
e.Y - testSprite.Position.Y);
}
}
Я думаю, что это в основном связано с тем, как я устанавливаю значения X
и Y
. Правильно ли я здесь делаю математику или это является причиной моей проблемы? Я решил написать это так, потому что я не хочу, чтобы источник текстуры (0, 0: верхний, левый) переместился в положение мыши, а вместо этого плавно перемещался мышью из ее текущего положения.
Ясность
- Правильна ли моя математика для назначения
X
и Y
?
- Да: Что еще может вызвать этот прыжок ?
- Нет: что такое правильная математика?
При отладке и пробовании разных подходов я узнал, что:
- Установка
Position
на e.X,Y
обеспечивает плавное движение.
- Однако это переходит в положение мыши, которое не является желательным.