Я создаю простую игру-симулятор транспортных средств и снарядов в WPF с использованием С#. Мне нужно иметь постоянную частоту кадров (т.е. мне нужно знать, на сколько перемещать объект с определенной скоростью в каждом кадре). Таким образом, я мог бы подписаться на событие, которое вычисляет и обновляет позиции в соответствии с физикой игры, на CompositionTarget.Rendering.
CompositionTarget.Rendering += UpdatePositions;
Я гуглил это некоторое время, и не нашел ответа. Частота кадров в WPF кажется произвольной, и с помощью секундомера можно узнать, сколько времени прошло между кадр, а предыдущий вообще не был бы чистым.
Я также подумал о том, чтобы создать свою собственную частоту кадров, вызывая UpdatePositions каждые несколько миллисекунд и надеясь, что рендеринг будет происходить соответствующим образом и иметь плавную анимацию. Это похоже на изобретение велосипеда, и я не могу придумать способ реализовать это простым и понятным способом.
Спасибо!