Я використовую C # / XNA, і мені вже не раз говорили, що не змішувати код оновлення з малюванням коду - і я впевнений, що це не так! Але чи могла б хто-небудь описати, що саме таке логічний код?
Як бачимо тут: http://blogs.msdn.com/b/shawnhar/archive/2007/07/25/understanding-gametime.aspx
[...] переконайтеся, що ви помістили всю свою логіку гри всередину методу оновлення (не в Draw!), і все буде працювати з приємною постійною швидкістю.
Я запитую це, оскільки швидкість моєї гри коливається відносно FPS. Повільний FPS дорівнює об'єктам, що рухаються повільно, і навпаки. І так, я включаю очікуваний position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
код.
Це, мабуть, велике запитання новичка, але я просто хочу бути абсолютно зрозумілим щодо визначення цього.
gt.ElapsedGameTime.TotalSeconds
- це кількість секунд, що минули від запуску програми (гри). Якщо ви помножите свою швидкість на це, то через 5 секунд гри ваша швидкість стане в 5 разів швидшою (за винятком спеціального випадку, коли швидкість встановлена на 0). Не впевнений, що ви ще могли мати, що могло б зробити це неправдою, але я заінтригований.
iii
що я збільшую вручну кожне оновлення, тому що я не хочу її за секунди, я хочу кроки або кадри. Я бачу, що ваш спосіб є дійсним способом м'якого кодування речей.
position = speed * ...TotalSeconds
. Зауважте, що це=
не так+=
. Якби це було так+=
само, як ви вводили, то ваше положення злетіло б із екрана майже миттєво.